% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}
\PassOptionsToPackage{dvipsnames,svgnames*,x11names*}{xcolor}
%
\documentclass[
  10pt,
]{book}
\usepackage{amsmath,amssymb}
\usepackage{lmodern}
\usepackage{ifxetex,ifluatex}
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
  \usepackage{unicode-math}
  \defaultfontfeatures{Scale=MatchLowercase}
  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
  \usepackage[]{microtype}
  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
  \IfFileExists{parskip.sty}{%
    \usepackage{parskip}
  }{% else
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{6pt plus 2pt minus 1pt}}
}{% if KOMA class
  \KOMAoptions{parskip=half}}
\makeatother
\usepackage{xcolor}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\hypersetup{
  pdftitle={小蓝哥的知识荒原},
  pdfauthor={李详},
  colorlinks=true,
  linkcolor=Maroon,
  filecolor=Maroon,
  citecolor=Blue,
  urlcolor=Blue,
  pdfcreator={LaTeX via pandoc}}
\urlstyle{same} % disable monospaced font for URLs
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\usepackage{framed}
\definecolor{shadecolor}{RGB}{248,248,248}
\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{#1}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.77,0.63,0.00}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\BuiltInTok}[1]{#1}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{0.64,0.00,0.00}{\textbf{#1}}}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\ImportTok}[1]{#1}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.81,0.36,0.00}{\textbf{#1}}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{#1}}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{#1}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textbf{\textit{#1}}}}
\usepackage{longtable,booktabs,array}
\usepackage{calc} % for calculating minipage widths
% Correct order of tables after \paragraph or \subparagraph
\usepackage{etoolbox}
\makeatletter
\patchcmd\longtable{\par}{\if@noskipsec\mbox{}\fi\par}{}{}
\makeatother
% Allow footnotes in longtable head/foot
\IfFileExists{footnotehyper.sty}{\usepackage{footnotehyper}}{\usepackage{footnote}}
\makesavenoteenv{longtable}
\usepackage{graphicx}
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
% Set default figure placement to htbp
\makeatletter
\def\fps@figure{htbp}
\makeatother
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{5}
\usepackage{ctex}

%\usepackage{xltxtra} % XeLaTeX的一些额外符号
% 设置中文字体
%\setCJKmainfont[BoldFont={黑体},ItalicFont={楷体}]{新宋体}

% 设置边距
\usepackage{geometry}
\geometry{%
  left=2.0cm, right=2.0cm, top=3.5cm, bottom=2.5cm} 

\usepackage{amsthm,mathrsfs}
\usepackage{booktabs}
\usepackage{longtable}
\makeatletter
\def\thm@space@setup{%
  \thm@preskip=8pt plus 2pt minus 4pt
  \thm@postskip=\thm@preskip
}
\makeatother
\ifluatex
  \usepackage{selnolig}  % disable illegal ligatures
\fi
\usepackage[]{biblatex}
\addbibresource{mybib.bib}

\title{小蓝哥的知识荒原}
\author{李详}
\date{2021年10月1日}

\begin{document}
\maketitle

{
\hypersetup{linkcolor=}
\setcounter{tocdepth}{1}
\tableofcontents
}
\listoftables
\listoffigures
\hypertarget{ux7b80ux4ecb}{%
\chapter*{简介}\label{ux7b80ux4ecb}}
\addcontentsline{toc}{chapter}{简介}

我，李详，昵称小蓝哥。现于云南农业大学攻读植物病理学博士学位。

个人博客：\href{https://www.web4xiang.com/}{小蓝哥的知识荒原}

运营公众号：

\begin{figure}

{\centering \includegraphics[width=3.58in]{figures/PLANTOMIX/PLANTOMIX} 

}

\end{figure}

\hypertarget{part-part-i-r}{%
\part*{Part I: R}\label{part-part-i-r}}
\addcontentsline{toc}{part}{Part I: R}

\hypertarget{r-base}{%
\chapter{语言基础}\label{r-base}}

\hypertarget{r-stat}{%
\chapter{统计分析}\label{r-stat}}

\hypertarget{r-vis}{%
\chapter{数据可视化}\label{r-vis}}

\hypertarget{ggplot2ux7ed8ux56feux76f8ux5173}{%
\section{\texorpdfstring{\texttt{ggplot2}绘图相关}{ggplot2绘图相关}}\label{ggplot2ux7ed8ux56feux76f8ux5173}}

\hypertarget{ggplot2ux7ed8ux5236ux6851ux57faux51b2ux51fbux56fe}{%
\subsection{\texorpdfstring{\texttt{ggplot2}绘制桑基(冲击图)}{ggplot2绘制桑基(冲击图)}}\label{ggplot2ux7ed8ux5236ux6851ux57faux51b2ux51fbux56fe}}

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{library}\NormalTok{(ggforce)}
\NormalTok{titanic }\OtherTok{\textless{}{-}}\NormalTok{ reshape2}\SpecialCharTok{::}\FunctionTok{melt}\NormalTok{(Titanic)}
\CommentTok{\# This is how we usually envision data for parallel sets}
\CommentTok{\#head(titanic)}
\CommentTok{\# Reshape for putting the first 4 columns as axes in the plot}
\NormalTok{titanic }\OtherTok{\textless{}{-}} \FunctionTok{gather\_set\_data}\NormalTok{(titanic, }\DecValTok{1}\SpecialCharTok{:}\DecValTok{4}\NormalTok{)}
\CommentTok{\#head(titanic)}
\CommentTok{\# Do the plotting}
\FunctionTok{ggplot}\NormalTok{(titanic, }\FunctionTok{aes}\NormalTok{(x, }\AttributeTok{id =}\NormalTok{ id, }\AttributeTok{split =}\NormalTok{ y, }\AttributeTok{value =}\NormalTok{ value)) }\SpecialCharTok{+}
  \FunctionTok{geom\_parallel\_sets}\NormalTok{(}\FunctionTok{aes}\NormalTok{(}\AttributeTok{fill =}\NormalTok{ Sex), }\AttributeTok{alpha =} \FloatTok{0.3}\NormalTok{, }\AttributeTok{axis.width =} \FloatTok{0.1}\NormalTok{) }\SpecialCharTok{+}
  \FunctionTok{geom\_parallel\_sets\_axes}\NormalTok{(}\AttributeTok{axis.width =} \FloatTok{0.2}\NormalTok{) }\SpecialCharTok{+}
  \FunctionTok{geom\_parallel\_sets\_labels}\NormalTok{(}\AttributeTok{colour =} \StringTok{\textquotesingle{}white\textquotesingle{}}\NormalTok{,}\AttributeTok{angle =} \DecValTok{0}\NormalTok{, }\AttributeTok{size =} \DecValTok{6}\NormalTok{) }\SpecialCharTok{+}
  \FunctionTok{scale\_y\_continuous}\NormalTok{(}\AttributeTok{expand =} \FunctionTok{c}\NormalTok{(}\DecValTok{0}\NormalTok{,}\DecValTok{0}\NormalTok{)) }\SpecialCharTok{+}
  \FunctionTok{scale\_fill\_aaas}\NormalTok{() }\SpecialCharTok{+}
  \FunctionTok{theme\_minimal}\NormalTok{() }\SpecialCharTok{+}
  \FunctionTok{theme}\NormalTok{(}\AttributeTok{axis.text.y =} \FunctionTok{element\_blank}\NormalTok{(),}
        \AttributeTok{axis.text.x =} \FunctionTok{element\_text}\NormalTok{(}\AttributeTok{size =} \DecValTok{12}\NormalTok{),}
        \AttributeTok{axis.title =} \FunctionTok{element\_blank}\NormalTok{(),}
        \AttributeTok{panel.background =} \FunctionTok{element\_blank}\NormalTok{(),}
        \AttributeTok{panel.grid =} \FunctionTok{element\_blank}\NormalTok{())}
\end{Highlighting}
\end{Shaded}

\begin{figure}

{\centering \includegraphics{3.R-vis_files/figure-latex/ggplot4SankeyDiagram-1} 

}

\caption{ggplot2绘制桑基图示例}\label{fig:ggplot4SankeyDiagram}
\end{figure}

\hypertarget{r-deve}{%
\chapter{R语言开发}\label{r-deve}}

\hypertarget{pac4xiang}{%
\section{R包pac4xiang的使用}\label{pac4xiang}}

\texttt{pac4xiang}这个R包是我自己开发的，包含了一些我自己常用的函数。包目前在\href{https://github.com/lixiang117423/pac4xiang}{GitHub}上，更多功能还在完善中，待进一步开发。

\hypertarget{ux5b89ux88c5}{%
\subsection{安装}\label{ux5b89ux88c5}}

在R中运行下面的代码安装\texttt{pac4xiang}。

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{devtools}\SpecialCharTok{::}\FunctionTok{install\_github}\NormalTok{(}\StringTok{\textquotesingle{}https://github.com/lixiang117423/pac4xiang\textquotesingle{}}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\hypertarget{ux4f7fux7528ux65b9ux6cd5}{%
\subsection{使用方法}\label{ux4f7fux7528ux65b9ux6cd5}}

\hypertarget{calstandcurve}{%
\subsubsection{\texorpdfstring{\texttt{calStandCurve}}{calStandCurve}}\label{calstandcurve}}

该函数用与计算相对定量qPCR的标曲。qPCR标曲点样参照图\ref{fig:qPCR1}。按照我的思路和习惯，我会准备8个浓度梯度的cDNA,从高到低分别是C0到C8。C0是对应批次下多有样品cDNA的组合，然后再以一定的稀释倍数稀释得到C1，C1再以同样的倍数稀释得到C2，依此类推，直到得到C8。

\begin{figure}

{\centering \includegraphics[width=16.25in]{figures/pac4xiang使用说明/1} 

}

\caption{qPCR标曲点样示意图}\label{fig:qPCR1}
\end{figure}

函数具体怎么用呢？参考下方的代码：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{df}\FloatTok{.1} \OtherTok{\textless{}{-}} \FunctionTok{calStandCurve}\NormalTok{(}
  \AttributeTok{data =} \StringTok{"20210927下机数据/20210928lx\_1.txt"}\NormalTok{,}
  \AttributeTok{genes =} \FunctionTok{c}\NormalTok{(}\StringTok{"OsPOX223"}\NormalTok{, }\StringTok{"OsAPX1"}\NormalTok{, }\StringTok{"OsAPX2"}\NormalTok{, }\StringTok{"OsPAL"}\NormalTok{),}
  \AttributeTok{rep =} \DecValTok{3}\NormalTok{,}
  \AttributeTok{dilution =} \DecValTok{4}\NormalTok{,}
  \AttributeTok{start =} \DecValTok{2}\NormalTok{,}
  \AttributeTok{end =} \DecValTok{6}\NormalTok{,}
  \AttributeTok{drop.NA =} \ConstantTok{TRUE}\NormalTok{,}
  \AttributeTok{fig.type =} \StringTok{"pdf"}
\NormalTok{)}
\end{Highlighting}
\end{Shaded}

其中基因的数量和技术重复的数量乘起来必须是12；基因的顺序必须是从左到右的；输入稀释倍数后告诉程序后续的标曲建立如何取相应的对数；\texttt{start}表示从第几行开始计算，如\texttt{start\ =\ 2}表示的是从B行开始计算标曲；对应的\texttt{end\ =\ 6}表示的是到第6行，也就是F行结束，也就意味着第一行和最后两行其实是不用的。默认是保存标曲的图片的，如果不需要保存图片加上\texttt{save.fig\ =\ FALSE}即可，默认的图片格式是\texttt{pdf}格式，可以自定义。

\begin{figure}

{\centering \includegraphics[width=8.14in]{figures/pac4xiang使用说明/3} 

}

\caption{函数calStandCurve返回的数据框}\label{fig:qPCR2}
\end{figure}

返回的结果是个数据框（参考图\ref{fig:qPCR2}），包含了基因名称、标曲公式、斜率、截距、R\(^2\)、P值、该标曲适用的自变量范围（最大值和最小值）及计算标曲的日期等。保存的图片默认存在当前工作目录下（运行\texttt{getcwd()}查看当前R语言工作目录）。

\hypertarget{calrtqpcr}{%
\subsubsection{\texorpdfstring{\texttt{calRTqPCR}}{calRTqPCR}}\label{calrtqpcr}}

该函数在\texttt{calStandCurve}函数返回的标曲结果的基础上可以计算不同处理下各基因的表达情况。样品的点样方法参考图\ref{fig:qPCR3}。

\begin{figure}

{\centering \includegraphics[width=15.12in]{figures/pac4xiang使用说明/2} 

}

\caption{qPCR标曲点样示意图}\label{fig:qPCR3}
\end{figure}

计算表达量的代码如下：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{exp}\FloatTok{.1} \OtherTok{\textless{}{-}} \FunctionTok{calRTqPCR}\NormalTok{(}
  \AttributeTok{data =} \StringTok{"20210927下机数据/20210929lx\_1.txt"}\NormalTok{,}
  \AttributeTok{StandCurve =}\NormalTok{ df}\FloatTok{.1}\NormalTok{,}
  \AttributeTok{genes =} \FunctionTok{c}\NormalTok{(}\StringTok{"OsPOX223"}\NormalTok{, }\StringTok{"OsAPX1"}\NormalTok{, }\StringTok{"OsAPX2"}\NormalTok{, }\StringTok{"OsPAL"}\NormalTok{),}
  \AttributeTok{treatment =} \FunctionTok{c}\NormalTok{(}\StringTok{"CK"}\NormalTok{, }\StringTok{"Inter"}\NormalTok{, }\StringTok{"Infect"}\NormalTok{)}
\NormalTok{)}
\end{Highlighting}
\end{Shaded}

其中的\texttt{data}就的样品的下机导出数据，\texttt{StandCurve}是函数\texttt{calStandCurve}返回的数据框，\texttt{gene}需要严格控制大小写，必须和输入函数\texttt{calStandCurve}的基因名称一样，\texttt{treatment}是指定从左到右的处理分别是什么，这个是为了后续方便进行\emph{\texttt{t}}检验。

\hypertarget{getalignresults}{%
\subsubsection{\texorpdfstring{\texttt{getAlignResults}}{getAlignResults}}\label{getalignresults}}

该函数可以将软件\texttt{CLUSTALW}的输出文件变成\texttt{.fasta}格式的比对结果。
写这个函数的原因在于每次我用MEGA进行序列比对构建进化树的时候都报错，不是字符串有问题就是长度不对，索性直接用Linux系统下的\texttt{CLUSTALW}进行序列比对，然后用MEGA构建进化树，百试不爽！

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{my.aln }\OtherTok{=} \FunctionTok{getAlignResults}\NormalTok{(}\AttributeTok{aln =} \StringTok{\textquotesingle{}test.aln\textquotesingle{}}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

运行完成后会在当前目录下生成一个\texttt{YourAlignResults.fasta}文件，就是\texttt{fasta}格式的比对文件，然后就可以用来构建进化树了。

\begin{itemize}
\item
  \texttt{mult.aov}
  该函数用于多分组数据进行方差分析。
\item
  \texttt{multGroupTtest}
  该函数用于进行多分组的\texttt{t}检验。
  这个函数是用于进行多组\texttt{t}检验的。比如每次跑qPCR，会有多个处理多个目的基因，这个时候就需要关注每个目的基因在不同的处理中的表达量。用法参考下方代码：
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{t.test }\OtherTok{\textless{}{-}} \FunctionTok{multGroupTtest}\NormalTok{(}
  \AttributeTok{data =}\NormalTok{ exp.all.final,}
  \AttributeTok{group1 =} \StringTok{"Gene"}\NormalTok{,}
  \AttributeTok{group2 =} \StringTok{"Treatment"}\NormalTok{,}
  \AttributeTok{CK =} \StringTok{"CK"}\NormalTok{,}
  \AttributeTok{value =} \StringTok{"Expression"}\NormalTok{,}
  \AttributeTok{level =} \FloatTok{0.95}
\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\hypertarget{plot96well}{%
\subsubsection{\texorpdfstring{\texttt{plot96well}}{plot96well}}\label{plot96well}}

该函数用于可视化\texttt{Roche}96孔板的\texttt{Cq}值。

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{plot96well}\NormalTok{(}\AttributeTok{data =} \StringTok{"20210927下机数据/20210928lx\_1.txt"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\hypertarget{plotciselement}{%
\subsubsection{\texorpdfstring{\texttt{plotCisElement}}{plotCisElement}}\label{plotciselement}}

该函数用与可视化基因启动子上的顺式作用元件。需要输入的参数有三个：

\hypertarget{dataplantcareux8fd4ux56deux7684ux6587ux4ef6}{%
\subsubsection{\texorpdfstring{\texttt{data}：\texttt{plantCARE}返回的文件；}{data：plantCARE返回的文件；}}\label{dataplantcareux8fd4ux56deux7684ux6587ux4ef6}}

\hypertarget{lengthux542fux52a8ux5b50ux957fux5ea6}{%
\subsubsection{\texorpdfstring{\texttt{length}：启动子长度；}{length：启动子长度；}}\label{lengthux542fux52a8ux5b50ux957fux5ea6}}

\hypertarget{cisux9700ux8981ux5c55ux793aux54eaux4e9bux987aux5f0fux4f5cux7528ux5143ux4ef6}{%
\subsubsection{\texorpdfstring{\texttt{Cis}：需要展示哪些顺式作用元件。}{Cis：需要展示哪些顺式作用元件。}}\label{cisux9700ux8981ux5c55ux793aux54eaux4e9bux987aux5f0fux4f5cux7528ux5143ux4ef6}}

\hypertarget{plotgenestructure}{%
\subsubsection{\texorpdfstring{\texttt{plotGeneStructure}}{plotGeneStructure}}\label{plotgenestructure}}

该函数用于可视化基因结构。输入文件为\texttt{.gtf}文件。
如果同时输入对应的进化树文件，那么就会按照进化树的顺序对基因名称进行排序，可以和\texttt{ggtree}进行联用。

\hypertarget{fasta2df}{%
\subsubsection{\texorpdfstring{\texttt{fasta2df}}{fasta2df}}\label{fasta2df}}

这个函数主要是为了将\texttt{fasta}格式转换成R中常见的\texttt{data.frame}格式。使用很简单，输入\texttt{fasta}格式即可。

\hypertarget{df2fasta}{%
\subsubsection{\texorpdfstring{\texttt{df2fasta}}{df2fasta}}\label{df2fasta}}

这个函数主要是将\texttt{data.frame}格式的序列文件转换成\texttt{fasta}格式。

\hypertarget{ggmotif}{%
\section{R包ggmotif的使用方法}\label{ggmotif}}

激发我开发这个R包的原因是在许做基因家族分析中的\texttt{motif}分析的时候总是找不到趁手的工具去可视化相关的结果，要么是在线网站，要么是别人开发的工具，网页版工具怕哪天就跑路了，别人的工具想要个性化比较困难。那，就自己写一个吧。

R包下载安装：

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{install.packages}\NormalTok{(}\StringTok{"ggmotif"}\NormalTok{)}

\CommentTok{\# 或者}
\NormalTok{devtools}\SpecialCharTok{::}\FunctionTok{install\_github}\NormalTok{(}\StringTok{"lixiang117423/ggmotif"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\texttt{meme}输出的结果主要是\texttt{XML}格式和\texttt{txt}格式的文件，需要的结果就在这两个文件里面。

\hypertarget{ux4ecexmlux6587ux4ef6ux63d0ux53d6ux7ed3ux679cux5e76ux7ed8ux56fe}{%
\subsection{从XML文件提取结果并绘图}\label{ux4ecexmlux6587ux4ef6ux63d0ux53d6ux7ed3ux679cux5e76ux7ed8ux56fe}}

\texttt{motif}在序列上的位置结果存放在\texttt{XML}格式的文件中，运行下面的代码便可以将结果转换成数据框格式并进行可视化。

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{filepath }\OtherTok{\textless{}{-}} \FunctionTok{system.file}\NormalTok{(}\StringTok{"examples"}\NormalTok{, }\StringTok{"meme.xml"}\NormalTok{, }\AttributeTok{package=}\StringTok{"ggmotif"}\NormalTok{)}
\NormalTok{motif\_extract }\OtherTok{\textless{}{-}} \FunctionTok{getMotifFromXML}\NormalTok{(}\AttributeTok{XMLfile =}\NormalTok{ filepath)}
\NormalTok{motif\_plot }\OtherTok{\textless{}{-}} \FunctionTok{motif\_location}\NormalTok{(}\AttributeTok{data =}\NormalTok{ motif\_extract)}
\NormalTok{motif\_plot}
\end{Highlighting}
\end{Shaded}

\hypertarget{ux4ecetxtux6587ux4ef6ux63d0ux53d6ux7ed3ux679cux5e76ux8fdbux884cux53efux89c6ux5316}{%
\subsection{从txt文件提取结果并进行可视化}\label{ux4ecetxtux6587ux4ef6ux63d0ux53d6ux7ed3ux679cux5e76ux8fdbux884cux53efux89c6ux5316}}

每个\texttt{motif}的序列是存放在\texttt{txt}文件中的，运行下方的代码便能结果转换成数据框格式并进行绘图。

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{library}\NormalTok{(tidyverse)}

\NormalTok{filepath }\OtherTok{\textless{}{-}} \FunctionTok{system.file}\NormalTok{(}\StringTok{"examples"}\NormalTok{, }\StringTok{"meme.txt"}\NormalTok{, }\AttributeTok{package =} \StringTok{"ggmotif"}\NormalTok{)}
\NormalTok{motif\_extract }\OtherTok{\textless{}{-}} \FunctionTok{getMotifFromTxt}\NormalTok{(}\AttributeTok{data =}\NormalTok{ filepath)}

\NormalTok{motif\_extract }\SpecialCharTok{\%\textgreater{}\%} 
\NormalTok{  dplyr}\SpecialCharTok{::}\FunctionTok{filter}\NormalTok{(motif.num }\SpecialCharTok{==} \StringTok{\textquotesingle{}Motif.1\textquotesingle{}}\NormalTok{) }\SpecialCharTok{\%\textgreater{}\%} 
\NormalTok{  dplyr}\SpecialCharTok{::}\FunctionTok{select}\NormalTok{(input.seq.motif) }\SpecialCharTok{\%\textgreater{}\%} 
\NormalTok{  ggseqlogo}\SpecialCharTok{::}\FunctionTok{ggseqlogo}\NormalTok{() }\SpecialCharTok{+}
  \FunctionTok{theme\_classic}\NormalTok{()}
\end{Highlighting}
\end{Shaded}

\hypertarget{ux4e0eggtreeux8054ux7528}{%
\subsection{\texorpdfstring{与\texttt{ggtree}联用}{与ggtree联用}}\label{ux4e0eggtreeux8054ux7528}}

有时候会对序列构建进化树展示进化关系，\texttt{ggmotif}中的函数能够以输入的进化树文件为基础，把输出的\texttt{motif}在序列上的位置与进化树上的位置进行匹配，便能够与\texttt{ggtree}联用在一个图上展示进化树和\texttt{motif}在序列上的位置。

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{filepath }\OtherTok{\textless{}{-}} \FunctionTok{system.file}\NormalTok{(}\StringTok{"examples"}\NormalTok{, }\StringTok{"meme.xml"}\NormalTok{, }\AttributeTok{package=}\StringTok{"ggmotif"}\NormalTok{)}
\NormalTok{treepath }\OtherTok{\textless{}{-}} \FunctionTok{system.file}\NormalTok{(}\StringTok{"examples"}\NormalTok{, }\StringTok{"tree.nwk"}\NormalTok{, }\AttributeTok{package=}\StringTok{"ggmotif"}\NormalTok{)}
\NormalTok{motif\_extract }\OtherTok{\textless{}{-}} \FunctionTok{getMotifFromXML}\NormalTok{(}\AttributeTok{XMLfile =}\NormalTok{ filepath)}
\NormalTok{motif\_plot\_with\_tree }\OtherTok{\textless{}{-}} \FunctionTok{motif\_with\_tree}\NormalTok{(}\AttributeTok{data =}\NormalTok{ motif\_extract, }\AttributeTok{tree =}\NormalTok{ treepath)}

\NormalTok{p.tree }\OtherTok{=}\NormalTok{ ape}\SpecialCharTok{::}\FunctionTok{read.tree}\NormalTok{(treepath) }\SpecialCharTok{\%\textgreater{}\%} 
\NormalTok{  ggtree}\SpecialCharTok{::}\FunctionTok{ggtree}\NormalTok{() }\SpecialCharTok{+}
\NormalTok{  ggtree}\SpecialCharTok{::}\FunctionTok{geom\_tiplab}\NormalTok{()}

\NormalTok{p.tree  }\SpecialCharTok{\%\textgreater{}\%} 
\NormalTok{  aplot}\SpecialCharTok{::}\FunctionTok{insert\_right}\NormalTok{(motif\_plot\_with\_tree, }\AttributeTok{width =} \FloatTok{0.8}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\hypertarget{r-shinyux5f00ux53d1}{%
\section{R shiny开发}\label{r-shinyux5f00ux53d1}}

\hypertarget{cssux5b66ux4e60ux7f51ux7ad9}{%
\subsection{CSS学习网站}\label{cssux5b66ux4e60ux7f51ux7ad9}}

\href{https://www.runoob.com/css/css-align.html}{CSS菜鸟教程}。

\href{https://unleash-shiny.rinterface.com/beautify-css.html}{CSS在Rshiny中的使用}。

\hypertarget{ux670dux52a1ux5668ux642dux5efarshiny-server}{%
\subsection{服务器搭建Rshiny-server}\label{ux670dux52a1ux5668ux642dux5efarshiny-server}}

\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{\#root 权限进入}
\NormalTok{sudo su}
\NormalTok{useradd shiny }\CommentTok{\# 添加shiny用户}
\NormalTok{passwd shiny }\CommentTok{\# 修改shiny用户的密码}

\NormalTok{chmod }\SpecialCharTok{+}\NormalTok{w }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{sudoers }\CommentTok{\# 修改权限}
\NormalTok{sudo vim }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{sudoers }\CommentTok{\# 编辑}
\CommentTok{\# root ALL=(ALL) ALL 该行，在下面添加 shiny ALL=(ALL:ALL) ALL}
\NormalTok{chmod }\SpecialCharTok{{-}}\NormalTok{w }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{sudoers }\CommentTok{\# 收回权限}

\NormalTok{su }\SpecialCharTok{{-}}\NormalTok{ shiny }\CommentTok{\# 切换到shiny用户}

\CommentTok{\# 安装R}
\NormalTok{sudo apt}\SpecialCharTok{{-}}\NormalTok{get update}
\NormalTok{sudo apt}\SpecialCharTok{{-}}\NormalTok{get install r}\SpecialCharTok{{-}}\NormalTok{base}

\CommentTok{\# 安装shiny包}
\NormalTok{sudo su }\SpecialCharTok{{-}}\NormalTok{c }\StringTok{"R {-}e }\SpecialCharTok{\textbackslash{}"}\StringTok{install.packages(\textquotesingle{}shiny\textquotesingle{},repos=\textquotesingle{}https://cran.rstudio.com/\textquotesingle{})}\SpecialCharTok{\textbackslash{}"}\StringTok{"}

\CommentTok{\# 安装shiny server}
\NormalTok{sudo apt}\SpecialCharTok{{-}}\NormalTok{get install gdebi}\SpecialCharTok{{-}}\NormalTok{core}
\NormalTok{wget https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{download3.rstudio.org}\SpecialCharTok{/}\NormalTok{ubuntu}\FloatTok{{-}14.04}\SpecialCharTok{/}\NormalTok{x86\_64}\SpecialCharTok{/}\NormalTok{shiny}\SpecialCharTok{{-}}\NormalTok{server}\DecValTok{{-}1}\NormalTok{.}\DecValTok{5}\NormalTok{.}\FloatTok{17.973}\SpecialCharTok{{-}}\NormalTok{amd64.deb}
\NormalTok{sudo gdebi shiny}\SpecialCharTok{{-}}\NormalTok{server}\DecValTok{{-}1}\NormalTok{.}\DecValTok{5}\NormalTok{.}\FloatTok{17.973}\SpecialCharTok{{-}}\NormalTok{amd64.deb}
\end{Highlighting}
\end{Shaded}

安装shiny-server的时候参考官方最新的指导页面，\href{https://www.rstudio.com/products/shiny/download-server/ubuntu/}{点击访问}。

日志所在目录为：\texttt{/var/log/shiny-server}。需要修改配置文件，保证记录运行日志，否则可能找不到报错提示。

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{vi }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{shiny}\SpecialCharTok{{-}}\NormalTok{server}\SpecialCharTok{/}\NormalTok{shiny}\SpecialCharTok{{-}}\NormalTok{server.conf}
\NormalTok{preserve\_logs true; }\CommentTok{\# 在最上面添加这行}
\end{Highlighting}
\end{Shaded}

软件所在目录为：\texttt{/srv/shiny-server}

安装完成后在浏览器输入\texttt{IP:3838}就能访问到示例界面了。默认的端口是\texttt{3838}端口，需要其他端口的需要自行调整。

基本管理：

\begin{Shaded}
\begin{Highlighting}[]
\DocumentationTok{\#\# 重启}
\NormalTok{sudo systemctl restart shiny}\SpecialCharTok{{-}}\NormalTok{server}
\DocumentationTok{\#\#查看状态 }
\NormalTok{sudo systemctl status shiny}\SpecialCharTok{{-}}\NormalTok{server }
\DocumentationTok{\#\#开启 }
\NormalTok{sudo systemctl start shiny}\SpecialCharTok{{-}}\NormalTok{server }
\DocumentationTok{\#\#停止 }
\NormalTok{sudo systemctl stop shiny}\SpecialCharTok{{-}}\NormalTok{server }
\end{Highlighting}
\end{Shaded}

\hypertarget{ubuntuux5b89ux88c5devtools}{%
\subsection{Ubuntu安装devtools}\label{ubuntuux5b89ux88c5devtools}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{sudo apt}\SpecialCharTok{{-}}\NormalTok{get install }\SpecialCharTok{{-}}\NormalTok{y libxml2}\SpecialCharTok{{-}}\NormalTok{dev libcurl4}\SpecialCharTok{{-}}\NormalTok{openssl}\SpecialCharTok{{-}}\NormalTok{dev libssl}\SpecialCharTok{{-}}\NormalTok{devv}
\end{Highlighting}
\end{Shaded}

最重要的是上面这一步，剩下的差啥装啥就OK。

安装\texttt{proj}这个包：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{sudo apt}\SpecialCharTok{{-}}\NormalTok{get install libproj}\SpecialCharTok{{-}}\NormalTok{dev}

\FunctionTok{install.packages}\NormalTok{(}\StringTok{"RcppEigen"}\NormalTok{, }\AttributeTok{INSTALL\_opts =} \StringTok{\textquotesingle{}{-}{-}no{-}lock\textquotesingle{}}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\hypertarget{part-part-ux2171-python}{%
\part*{Part Ⅱ: Python}\label{part-part-ux2171-python}}
\addcontentsline{toc}{part}{Part Ⅱ: Python}

\hypertarget{python-base}{%
\chapter{Python基础}\label{python-base}}

\hypertarget{ux751fux7269ux5e8fux5217ux5904ux7406}{%
\section{生物序列处理}\label{ux751fux7269ux5e8fux5217ux5904ux7406}}

本章主要是关于Python的相关知识，包括Python基础知识、数据统计分析、数据可视化及人工只能等内容。

\hypertarget{fastaux6587ux4ef6ux5904ux7406}{%
\subsection{\texorpdfstring{\texttt{fasta}文件处理}{fasta文件处理}}\label{fastaux6587ux4ef6ux5904ux7406}}

\begin{itemize}
\tightlist
\item
  处理从PlantTFDB下载的序列
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\ImportTok{import}\NormalTok{ os}
\NormalTok{os.chdir(}\StringTok{"C://Users//Administrator//Desktop//"}\NormalTok{)}
\CommentTok{\#read txt method one}
\NormalTok{wrky\_seq }\OperatorTok{=} \BuiltInTok{open}\NormalTok{(}\StringTok{\textquotesingle{}wrky\_seq.fasta\textquotesingle{}}\NormalTok{,}\StringTok{\textquotesingle{}w\textquotesingle{}}\NormalTok{)}
\NormalTok{wrky\_info }\OperatorTok{=} \BuiltInTok{open}\NormalTok{(}\StringTok{\textquotesingle{}wrky\_info.txt\textquotesingle{}}\NormalTok{,}\StringTok{\textquotesingle{}w\textquotesingle{}}\NormalTok{)}
\NormalTok{f }\OperatorTok{=} \BuiltInTok{open}\NormalTok{(}\StringTok{"seq.fas"}\NormalTok{,}\StringTok{\textquotesingle{}r\textquotesingle{}}\NormalTok{)}
\ControlFlowTok{for}\NormalTok{ line }\KeywordTok{in}\NormalTok{ f:}
    \ControlFlowTok{if} \BuiltInTok{str}\NormalTok{.startswith(line,}\StringTok{"\textgreater{}"}\NormalTok{):}
\NormalTok{        seq\_name }\OperatorTok{=} \BuiltInTok{str}\NormalTok{.split(line, }\StringTok{\textquotesingle{}|\textquotesingle{}}\NormalTok{)[}\DecValTok{0}\NormalTok{]}
        \CommentTok{\#seq\_name = str.split(seq\_name,\textquotesingle{}.\textquotesingle{})[0]}
\NormalTok{        seq\_species }\OperatorTok{=} \BuiltInTok{str}\NormalTok{.split(line, }\StringTok{\textquotesingle{}|\textquotesingle{}}\NormalTok{)[}\DecValTok{1}\NormalTok{]}
\NormalTok{        seq\_name2 }\OperatorTok{=} \BuiltInTok{str}\NormalTok{.replace(seq\_name, }\StringTok{"\textgreater{}"}\NormalTok{, }\StringTok{""}\NormalTok{)}
        \CommentTok{\#print(seq\_name)}
\NormalTok{        wrky\_seq.write(seq\_name }\OperatorTok{+} \StringTok{"}\CharTok{\textbackslash{}n}\StringTok{"}\NormalTok{)}
\NormalTok{        wrky\_info.write(seq\_name }\OperatorTok{+} \StringTok{"    "} \OperatorTok{+}\NormalTok{ seq\_name2 }\OperatorTok{+} \StringTok{"    "} \OperatorTok{+}\NormalTok{ seq\_species }\OperatorTok{+} \StringTok{"}\CharTok{\textbackslash{}n}\StringTok{"}\NormalTok{)}
    \ControlFlowTok{else}\NormalTok{:}
\NormalTok{        wrky\_seq.write(line)}
\NormalTok{wrky\_seq.close()}
\NormalTok{wrky\_info.close()}
\end{Highlighting}
\end{Shaded}

\hypertarget{python-stat}{%
\chapter{数据统计分析}\label{python-stat}}

\hypertarget{python-spider}{%
\chapter{Python爬虫}\label{python-spider}}

\hypertarget{ai}{%
\chapter{人工智能}\label{ai}}

\hypertarget{part-part-ux2172-ux751fux7269ux4fe1ux606fux5b66}{%
\part*{Part Ⅲ: 生物信息学}\label{part-part-ux2172-ux751fux7269ux4fe1ux606fux5b66}}
\addcontentsline{toc}{part}{Part Ⅲ: 生物信息学}

\hypertarget{bio-base}{%
\chapter{基础知识}\label{bio-base}}

\hypertarget{ux5b66ux4e60ux8d44ux6e90ux63a8ux8350}{%
\section{学习资源推荐}\label{ux5b66ux4e60ux8d44ux6e90ux63a8ux8350}}

\begin{itemize}
\tightlist
\item
  \href{https://github.com/ossu/bioinformatics}{自学生信RoadMap}
\end{itemize}

\hypertarget{ux5e38ux7528ux7684ux751fux7269ux5b66ux6570ux636eux5e93}{%
\section{常用的生物学数据库}\label{ux5e38ux7528ux7684ux751fux7269ux5b66ux6570ux636eux5e93}}

\hypertarget{cath-gene3d}{%
\subsection{CATH-Gene3D}\label{cath-gene3d}}

这个数据库是蛋白质数据库，主要是蛋白结构域的进化关系。

\href{https://www.cathdb.info/}{点击访问}。

\hypertarget{fasttreeux6784ux5efaux8fdbux5316ux6811}{%
\section{FastTree构建进化树}\label{fasttreeux6784ux5efaux8fdbux5316ux6811}}

\href{http://www.microbesonline.org/fasttree/}{FastTree}是基于最大似然法构建进化树的软件，使用简单。Windows端直接下载，完后运行即可：

\begin{verbatim}
.\FastTree.exe .\YourAlignResults.fasta
\end{verbatim}

前面是软件名称，后面是比对好的序列文件。

\hypertarget{bio-env}{%
\chapter{环境搭建}\label{bio-env}}

\hypertarget{WSL4Docker}{%
\section{\texorpdfstring{\texttt{WSL}安装使用\texttt{Docker}}{WSL安装使用Docker}}\label{WSL4Docker}}

\hypertarget{dockerux7684ux5b89ux88c5}{%
\subsection{\texorpdfstring{\texttt{Docker}的安装}{Docker的安装}}\label{dockerux7684ux5b89ux88c5}}

参考的安装教程：\href{https://yeasy.gitbook.io/docker_practice/install/ubuntu}{Docker-从入门到实践}。关键的代码如下：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{curl }\SpecialCharTok{{-}}\NormalTok{fsSL test.docker.com }\SpecialCharTok{{-}}\NormalTok{o get}\SpecialCharTok{{-}}\NormalTok{docker.sh}
\NormalTok{curl }\SpecialCharTok{{-}}\NormalTok{fsSL get.docker.com }\SpecialCharTok{{-}}\NormalTok{o get}\SpecialCharTok{{-}}\NormalTok{docker.sh}
\NormalTok{sudo sh get}\SpecialCharTok{{-}}\NormalTok{docker.sh }\SpecialCharTok{{-}{-}}\NormalTok{mirror Aliyun}
\NormalTok{sudo sh get}\SpecialCharTok{{-}}\NormalTok{docker.sh }\SpecialCharTok{{-}{-}}\NormalTok{mirror AzureChinaCloud}
\end{Highlighting}
\end{Shaded}

\hypertarget{dockerux7684ux4f7fux7528}{%
\subsection{\texorpdfstring{\texttt{Docker}的使用}{Docker的使用}}\label{dockerux7684ux4f7fux7528}}

\texttt{Docker}默认是需要\texttt{root}用户才能使用的，在\texttt{Windows上}我习惯于进入\texttt{Powershell}后执行下面的命令启动\texttt{Docker}：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{wsl }\SpecialCharTok{{-}{-}}\NormalTok{shutdown }\CommentTok{\# 先关闭wsl}
\NormalTok{wsl }\CommentTok{\# 启动WSL}
\NormalTok{sudo su }\CommentTok{\# 进入root}
\NormalTok{sudo service docker start }\CommentTok{\# 启动Docker}
\NormalTok{su xiang }\CommentTok{\# 切换会用户（非root权限）}
\end{Highlighting}
\end{Shaded}

\hypertarget{ux5982ux4f55ux4ecewsl1ux5207ux6362ux5230wsl2}{%
\subsection{\texorpdfstring{如何从\texttt{WSL1}切换到\texttt{WSL2}}{如何从WSL1切换到WSL2}}\label{ux5982ux4f55ux4ecewsl1ux5207ux6362ux5230wsl2}}

我在\texttt{Windows}上使用\texttt{Docker}遇到的一个很奇怪的问题是，我之前的版本是\texttt{WSL1},\texttt{Docker}无论如何都无法使用，搜索半天也没有找到解决方法，索性将\texttt{WSL1}升级成\texttt{WSL2}，没想到问题就那样解决了。参考教程：\href{https://zhuanlan.zhihu.com/p/356397851}{知乎：WSL1 升级为WSL2}。下面是升级的过程：

\begin{itemize}
\item
  下载对应的内核更新包：\href{https://link.zhihu.com/?target=https\%3A//wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi}{点击下载}
\item
  \texttt{CMD}中管理员身份运行代码：
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{dism.exe }\SpecialCharTok{/}\NormalTok{online }\SpecialCharTok{/}\NormalTok{enable}\SpecialCharTok{{-}}\NormalTok{feature }\SpecialCharTok{/}\NormalTok{featurename}\SpecialCharTok{:}\NormalTok{VirtualMachinePlatform }\SpecialCharTok{/}\NormalTok{all }\SpecialCharTok{/}\NormalTok{norestart}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  设置版本
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{wsl }\SpecialCharTok{{-}{-}}\NormalTok{set}\SpecialCharTok{{-}}\NormalTok{version Ubuntu}\FloatTok{{-}20.04} \DecValTok{2}
\end{Highlighting}
\end{Shaded}

其中的\texttt{Ubuntu-20.04}是通过代码\texttt{wsl\ -l\ -v}查看到的。

然后再次重启\texttt{WSL}即可。

\hypertarget{ux4e0bux8f7ddockerux955cux50cf}{%
\subsection{\texorpdfstring{下载\texttt{Docker}镜像}{下载Docker镜像}}\label{ux4e0bux8f7ddockerux955cux50cf}}

在\href{https://hub.docker.com/}{Docker Hub}中检索下载需要的镜像。

\hypertarget{dockerux7684ux4f7fux7528-1}{%
\subsection{\texorpdfstring{\texttt{Docker}的使用}{Docker的使用}}\label{dockerux7684ux4f7fux7528-1}}

进入\texttt{WSL}后运行下方代码运行\texttt{Docker}：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{sudo service }\SpecialCharTok{{-}{-}}\NormalTok{status}\SpecialCharTok{{-}}\NormalTok{all }
\NormalTok{sudo service docker start}
\NormalTok{sudo service docker start}
\NormalTok{docker run }\SpecialCharTok{{-}}\NormalTok{v }\SpecialCharTok{/}\NormalTok{mnt}\SpecialCharTok{/}\ErrorTok{:/}\NormalTok{work }\SpecialCharTok{{-}}\NormalTok{it omicsclass}\SpecialCharTok{/}\NormalTok{rnaseq}
\end{Highlighting}
\end{Shaded}

其中的\texttt{work}是不一定的，需要看镜像给的路径是啥。

\hypertarget{ux5982ux4f55ux521bux5efaux81eaux5df1ux7684ux955cux50cf}{%
\subsection{如何创建自己的镜像}\label{ux5982ux4f55ux521bux5efaux81eaux5df1ux7684ux955cux50cf}}

先从\href{https://hub.docker.com/}{Docker Hub}下载\texttt{Ubuntu}的官方镜像，然后在镜像中安装需要的软件。
PS：如何加速\texttt{pip}的下载：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{pip install django }\SpecialCharTok{{-}}\NormalTok{i https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{pypi.tuna.tsinghua.edu.cn}\SpecialCharTok{/}\NormalTok{simple}
\end{Highlighting}
\end{Shaded}

加速的\texttt{R}包的下载安装：

\begin{Shaded}
\begin{Highlighting}[]
\FunctionTok{options}\NormalTok{(}\AttributeTok{repos=}\FunctionTok{structure}\NormalTok{(}\FunctionTok{c}\NormalTok{(}\AttributeTok{CRAN=}\StringTok{"https://mirrors.tuna.tsinghua.edu.cn/CRAN/"}\NormalTok{)))}
\FunctionTok{options}\NormalTok{(}\AttributeTok{BioC\_mirror=}\StringTok{"https://mirrors.tuna.tsinghua.edu.cn/bioconductor"}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

在安装完成需要的软件后，先运行\texttt{exit}退出\texttt{Docker}，然后运行下面的代码生成新的镜像：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{docker commit }\SpecialCharTok{{-}}\NormalTok{m }\StringTok{" add some softwares for RNA{-}Seq"} \SpecialCharTok{{-}}\NormalTok{a }\StringTok{"xiangli"}\NormalTok{ 21bfa810c811 lixiang117423}\SpecialCharTok{/}\NormalTok{rnaseq}\SpecialCharTok{:}\NormalTok{v1}
\end{Highlighting}
\end{Shaded}

然后登陆自己的\texttt{Docker}，登录以后把新的镜像推送到\texttt{Docker\ Hub}即可：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{docker push lixiang117423}\SpecialCharTok{/}\NormalTok{rnaseq}\SpecialCharTok{:}\NormalTok{v1}
\end{Highlighting}
\end{Shaded}

\hypertarget{condaux7684ux5b89ux88c5ux4f7fux7528}{%
\section{\texorpdfstring{\texttt{Conda}的安装使用}{Conda的安装使用}}\label{condaux7684ux5b89ux88c5ux4f7fux7528}}

\hypertarget{ux4e0bux8f7dux5b89ux88c5}{%
\subsection{下载安装}\label{ux4e0bux8f7dux5b89ux88c5}}

现在\href{https://docs.conda.io/projects/conda/en/latest/user-guide/install/download.html}{官方网站}下载对应版本的\texttt{.sh}文件。然后一路默认安装即可。安装完成后激活用户目录下的\texttt{.bashrc}文件即可。

\hypertarget{condaux5b89ux88c5rux53carux5305}{%
\subsection{\texorpdfstring{\texttt{Conda}安装\texttt{R}及\texttt{R}包}{Conda安装R及R包}}\label{condaux5b89ux88c5rux53carux5305}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{conda instll r}\SpecialCharTok{{-}}\NormalTok{base}
\NormalTok{conda instll r}\SpecialCharTok{{-}}\NormalTok{ggplot2}
\NormalTok{conda install }\SpecialCharTok{{-}}\NormalTok{c bioconda bioconductor}\SpecialCharTok{{-}}\NormalTok{deseq2}
\end{Highlighting}
\end{Shaded}

\hypertarget{ux5b89ux88c5ux5176ux4ed6ux8f6fux4ef6}{%
\subsection{安装其他软件}\label{ux5b89ux88c5ux5176ux4ed6ux8f6fux4ef6}}

其他软件的安装直接去\href{https://anaconda.org/gallery}{Conda Gallery}上检索进行安装。

\hypertarget{pipux4e0bux8f7dux901fux5ea6ux6162ux7684ux89e3ux51b3ux65b9ux6cd5}{%
\subsection{\texorpdfstring{\texttt{pip}下载速度慢的解决方法：}{pip下载速度慢的解决方法：}}\label{pipux4e0bux8f7dux901fux5ea6ux6162ux7684ux89e3ux51b3ux65b9ux6cd5}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{pip install django }\SpecialCharTok{{-}}\NormalTok{i https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{pypi.tuna.tsinghua.edu.cn}\SpecialCharTok{/}\NormalTok{simple}
\end{Highlighting}
\end{Shaded}

\hypertarget{gitux7684ux4f7fux7528}{%
\section{git的使用}\label{gitux7684ux4f7fux7528}}

\hypertarget{gitux540cux65f6ux7ba1ux7406githubux4e0egitee}{%
\subsection{git同时管理GitHub与Gitee}\label{gitux540cux65f6ux7ba1ux7406githubux4e0egitee}}

\begin{Shaded}
\begin{Highlighting}[]
\FloatTok{1.}\NormalTok{ 查看远程仓库地址}
\NormalTok{git remote }\SpecialCharTok{{-}}\NormalTok{v}

\FloatTok{2.}\NormalTok{ 重命名远程仓库}
\NormalTok{git remote rename origin github}

\FloatTok{3.}\NormalTok{ 添加新的远程仓库}
\NormalTok{git remote add gitee https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{gitee.com}\SpecialCharTok{/}\NormalTok{gozhuyinglong}\SpecialCharTok{/}\NormalTok{blog}\SpecialCharTok{{-}}\NormalTok{demos.git}

\FloatTok{4.}\NormalTok{ 多个远程仓库推拉}
\NormalTok{git push github main}
\NormalTok{git pull github main}
\NormalTok{git push gitee main}
\NormalTok{git pull gitee main}

\FloatTok{5.}\NormalTok{ 将本地分支与远程分支进行关联}
\NormalTok{git push }\SpecialCharTok{{-}{-}}\NormalTok{set}\SpecialCharTok{{-}}\NormalTok{upstream gitee main}

\FloatTok{6.}\NormalTok{ 直接推送不指定分支}
\NormalTok{git push github}
\NormalTok{git pull github}
\NormalTok{git push gitee}
\NormalTok{git pull gitee}

\FloatTok{7.}\NormalTok{ 移除远程仓库}
\NormalTok{git remote remove gitee}
\end{Highlighting}
\end{Shaded}

\hypertarget{ux8f6fux4ef6ux5b89ux88c5}{%
\section{软件安装}\label{ux8f6fux4ef6ux5b89ux88c5}}

\hypertarget{aspera}{%
\subsection{Aspera}\label{aspera}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{wget https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{ak}\SpecialCharTok{{-}}\NormalTok{delivery04}\SpecialCharTok{{-}}\NormalTok{mul.dhe.ibm.com}\SpecialCharTok{/}\NormalTok{sar}\SpecialCharTok{/}\NormalTok{CMA}\SpecialCharTok{/}\NormalTok{OSA}\SpecialCharTok{/}\NormalTok{09cne}\SpecialCharTok{/}\DecValTok{0}\SpecialCharTok{/}\NormalTok{ibm}\SpecialCharTok{{-}}\NormalTok{aspera}\SpecialCharTok{{-}}\NormalTok{connect}\DecValTok{{-}3}\NormalTok{.}\DecValTok{11}\NormalTok{.}\FloatTok{0.5}\SpecialCharTok{{-}}\NormalTok{linux}\SpecialCharTok{{-}}\NormalTok{g2}\FloatTok{.12{-}64.}\NormalTok{tar.gz}

\NormalTok{tar }\SpecialCharTok{{-}}\NormalTok{zxvf ibm}\SpecialCharTok{{-}}\NormalTok{aspera}\SpecialCharTok{{-}}\NormalTok{connect}\DecValTok{{-}3}\NormalTok{.}\DecValTok{11}\NormalTok{.}\FloatTok{0.5}\SpecialCharTok{{-}}\NormalTok{linux}\SpecialCharTok{{-}}\NormalTok{g2}\FloatTok{.12{-}64.}\NormalTok{tar.gz}

\NormalTok{.}\SpecialCharTok{/}\NormalTok{ibm}\SpecialCharTok{{-}}\NormalTok{aspera}\SpecialCharTok{{-}}\NormalTok{connect}\DecValTok{{-}3}\NormalTok{.}\DecValTok{11}\NormalTok{.}\FloatTok{0.5}\SpecialCharTok{{-}}\NormalTok{linux}\SpecialCharTok{{-}}\NormalTok{g2}\FloatTok{.12{-}64.}\NormalTok{sh}

\NormalTok{echo }\StringTok{"""export PATH=}\SpecialCharTok{\textbackslash{}"}\StringTok{/home/xiang/.aspera/connect/bin:\textbackslash{}$PATH}\SpecialCharTok{\textbackslash{}"}\StringTok{ """} \SpecialCharTok{\textgreater{}}\ErrorTok{\textgreater{}} \ErrorTok{\textasciitilde{}/}\NormalTok{.bashrc}

\NormalTok{source }\SpecialCharTok{\textasciitilde{}}\ErrorTok{/}\NormalTok{.bashrc}

\NormalTok{ascp }\SpecialCharTok{{-}}\NormalTok{h}

\NormalTok{ascp}\SpecialCharTok{{-}}\NormalTok{i }\SpecialCharTok{/}\NormalTok{mnt}\SpecialCharTok{/}\NormalTok{c}\SpecialCharTok{/}\NormalTok{Users}\SpecialCharTok{/}\NormalTok{Administrator}\SpecialCharTok{/}\NormalTok{Desktop}\SpecialCharTok{/}\NormalTok{aspera.openssh }\SpecialCharTok{{-}}\NormalTok{QT }\SpecialCharTok{{-}}\NormalTok{l100m }\SpecialCharTok{{-}}\NormalTok{k1 d }\SpecialCharTok{/}\NormalTok{mnt}\SpecialCharTok{/}\NormalTok{h}\SpecialCharTok{/}\NormalTok{BaiduNetdiskDownload}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.gz subasp}\SpecialCharTok{@}\NormalTok{upload.ncbi.nlm.nih.gov}\SpecialCharTok{:}\NormalTok{uploads}\SpecialCharTok{/}\NormalTok{luolifenllf\_126.com\_tCdfcqJq}\SpecialCharTok{/}\NormalTok{20210816upload}

\NormalTok{ascp }\SpecialCharTok{{-}}\NormalTok{i aspera.openssh }\SpecialCharTok{{-}}\NormalTok{QT }\SpecialCharTok{{-}}\NormalTok{l1000m }\SpecialCharTok{{-}}\NormalTok{k1 }\SpecialCharTok{{-}}\NormalTok{d A2.R2.fastq.gz subasp}\SpecialCharTok{@}\NormalTok{upload.ncbi.nlm.nih.gov}\SpecialCharTok{:}\NormalTok{uploads}\SpecialCharTok{/}\NormalTok{luolifenllf\_126.com\_tCdfcqJq}\SpecialCharTok{/}\NormalTok{20210816upload}
\end{Highlighting}
\end{Shaded}

\hypertarget{ubuntuux642dux5efaux751fux4fe1ux73afux5883}{%
\section{Ubuntu搭建生信环境}\label{ubuntuux642dux5efaux751fux4fe1ux73afux5883}}

下面的代码来自王通老师。

\hypertarget{ux65e7ux7248ux672c}{%
\subsection{旧版本}\label{ux65e7ux7248ux672c}}

\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{\#下载ubuntu 20.04镜像}
\NormalTok{https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{ftp.sjtu.edu.cn}\SpecialCharTok{/}\NormalTok{ubuntu}\SpecialCharTok{{-}}\NormalTok{cd}\SpecialCharTok{/}\DecValTok{20}\NormalTok{.}\FloatTok{04.1}\SpecialCharTok{/}\NormalTok{ubuntu}\DecValTok{{-}20}\NormalTok{.}\FloatTok{04.1}\SpecialCharTok{{-}}\NormalTok{desktop}\SpecialCharTok{{-}}\NormalTok{amd64.iso}

\CommentTok{\#制作USB启动盘}
\CommentTok{\#下载使用rufus https://rufus.ie/}
\CommentTok{\#或者ultraISO https://cn.ultraiso.net/}

\CommentTok{\#挂载磁盘}
\CommentTok{\#假设未挂载磁盘为/dev/sdb}
\NormalTok{fdisk }\SpecialCharTok{{-}}\NormalTok{l}
\NormalTok{parted }\SpecialCharTok{/}\NormalTok{dev}\SpecialCharTok{/}\NormalTok{sdb}
\CommentTok{\#交互界面 }
\NormalTok{mklabel gpt}
\NormalTok{quit}
\CommentTok{\#格式化磁盘}
\NormalTok{mkfs.xfs }\SpecialCharTok{{-}}\NormalTok{f }\SpecialCharTok{/}\NormalTok{dev}\SpecialCharTok{/}\NormalTok{sdb }
\CommentTok{\#挂载磁盘}
\NormalTok{mkdir }\SpecialCharTok{/}\NormalTok{ifs1}
\NormalTok{mount }\SpecialCharTok{/}\NormalTok{dev}\SpecialCharTok{/}\NormalTok{sdb }\SpecialCharTok{/}\NormalTok{ifs1}
\CommentTok{\#修改fstab}
\NormalTok{echo }\StringTok{"/dev/sdb /ifs1                       xfs     defaults,uquota        0 0"} \SpecialCharTok{\textgreater{}}\ErrorTok{\textgreater{}/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{fstab}

\CommentTok{\#创建root账户}
\NormalTok{sudo passwd root}
\NormalTok{输入当前用户密码：}
\NormalTok{输入root密码：}
\NormalTok{再次输入root密码：}

\CommentTok{\#以下操作使用root账户完成}
\NormalTok{su }\SpecialCharTok{{-}}

\CommentTok{\#修改源}
\NormalTok{cp }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{apt}\SpecialCharTok{/}\NormalTok{sources.list }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{apt}\SpecialCharTok{/}\NormalTok{sources.list.bak}
\NormalTok{sed }\SpecialCharTok{{-}}\NormalTok{i }\StringTok{\textquotesingle{}s\#cn.archive.ubuntu.com\#mirrors.aliyun.com\#g\textquotesingle{}} \SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{apt}\SpecialCharTok{/}\NormalTok{sources.list}
\NormalTok{sudo apt}\SpecialCharTok{{-}}\NormalTok{get update }\SpecialCharTok{\&\&}\NormalTok{ sudo apt}\SpecialCharTok{{-}}\NormalTok{get upgrade}

\CommentTok{\#ssh登录}
\NormalTok{apt install openssh}\SpecialCharTok{{-}}\NormalTok{server}
\NormalTok{ps }\SpecialCharTok{{-}}\NormalTok{e }\SpecialCharTok{|}\NormalTok{  grep ssh   }\CommentTok{\#检查ssh server是否启动}
\NormalTok{sudo }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{init.d}\SpecialCharTok{/}\NormalTok{ssh start  }\CommentTok{\#启动}

\CommentTok{\#安装java}
\NormalTok{apt}\SpecialCharTok{{-}}\NormalTok{get install openjdk}\DecValTok{{-}8}\SpecialCharTok{{-}}\NormalTok{jdk}
\NormalTok{sudo add}\SpecialCharTok{{-}}\NormalTok{apt}\SpecialCharTok{{-}}\NormalTok{repository ppa}\SpecialCharTok{:}\NormalTok{webupd8team}\SpecialCharTok{/}\NormalTok{java}
\NormalTok{apt update}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y oracle}\SpecialCharTok{{-}}\NormalTok{java8}\SpecialCharTok{{-}}\NormalTok{installer}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y zlib1g zlib1g.dev}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y libboost}\SpecialCharTok{{-}}\NormalTok{dev}

\CommentTok{\#安装R以及Rstudio}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y r}\SpecialCharTok{{-}}\NormalTok{base}
\NormalTok{https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{download1.rstudio.org}\SpecialCharTok{/}\NormalTok{desktop}\SpecialCharTok{/}\NormalTok{bionic}\SpecialCharTok{/}\NormalTok{amd64}\SpecialCharTok{/}\NormalTok{rstudio}\DecValTok{{-}1}\NormalTok{.}\FloatTok{3.1093}\SpecialCharTok{{-}}\NormalTok{amd64.deb}
\NormalTok{dpkg }\SpecialCharTok{{-}}\NormalTok{i rstudio}\DecValTok{{-}1}\NormalTok{.}\FloatTok{3.1093}\SpecialCharTok{{-}}\NormalTok{amd64.deb}

\CommentTok{\#安装一些小工具}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y git vim tree creen htop cmake lftp lrzsz}

\CommentTok{\#apt安装生物软件}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bwa}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y samtools }
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bcftools}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y blast2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bedtools}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y seqtk}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y minimap2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bowtie2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y phylip}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y clustalx}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y canu}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y kraken2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y hisat2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y stringtie}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y jellyfish}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y circos}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y nanopolish}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y nanook}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y centrifuge}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y rna}\SpecialCharTok{{-}}\NormalTok{star}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y freebayes}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y cnvkit}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y spades}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y mothur}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y muscle}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y mafft}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y iqtree}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y sniffles}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y last}\SpecialCharTok{{-}}\NormalTok{align}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y augustus}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bamtools }
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bedops}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y delly}

\CommentTok{\#安装浏览器}
\NormalTok{apt}\SpecialCharTok{{-}}\NormalTok{get install }\SpecialCharTok{{-}}\NormalTok{y chromium}\SpecialCharTok{{-}}\NormalTok{browser}

\CommentTok{\#安装微信}
\NormalTok{wget https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{www.ubuntukylin.com}\SpecialCharTok{/}\NormalTok{public}\SpecialCharTok{/}\NormalTok{pdf}\SpecialCharTok{/}\NormalTok{wine}\SpecialCharTok{{-}}\NormalTok{wechat\_1}\FloatTok{.0}\SpecialCharTok{{-}}\NormalTok{windows2.}\FloatTok{8.6}\NormalTok{\_all.deb}
\CommentTok{\#Debian 系的操作系统可以执行这样的命令：}
\NormalTok{sudo dpkg }\SpecialCharTok{{-}{-}}\NormalTok{add}\SpecialCharTok{{-}}\NormalTok{architecture i386}
\NormalTok{sudo apt update}
\CommentTok{\#安装 wine 应用所需的依赖，也就是 wine：}
\NormalTok{sudo apt install wine}\SpecialCharTok{{-}}\NormalTok{stable}
\CommentTok{\#使用 dpkg 安装 wine 应用：}
\NormalTok{sudo dpkg }\SpecialCharTok{{-}}\NormalTok{i wine}\SpecialCharTok{{-}}\NormalTok{wechat\_1}\FloatTok{.0}\SpecialCharTok{{-}}\NormalTok{windows2.}\FloatTok{8.6}\NormalTok{\_all.deb}

\CommentTok{\#安装bioconda}
\NormalTok{wget https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{repo.continuum.io}\SpecialCharTok{/}\NormalTok{miniconda}\SpecialCharTok{/}\NormalTok{Miniconda3}\SpecialCharTok{{-}}\NormalTok{latest}\SpecialCharTok{{-}}\NormalTok{Linux}\SpecialCharTok{{-}}\NormalTok{x86\_64.sh  }
\NormalTok{sh Miniconda3}\SpecialCharTok{{-}}\NormalTok{latest}\SpecialCharTok{{-}}\NormalTok{Linux}\SpecialCharTok{{-}}\NormalTok{x86\_64.sh  }
\NormalTok{source }\SpecialCharTok{\textasciitilde{}}\ErrorTok{/}\NormalTok{.bashrc}

\CommentTok{\#添加软件源}
\NormalTok{conda config }\SpecialCharTok{{-}{-}}\NormalTok{add channels bioconda }
\NormalTok{conda config }\SpecialCharTok{{-}{-}}\NormalTok{add channels conda}\SpecialCharTok{{-}}\NormalTok{forge}
\end{Highlighting}
\end{Shaded}

\hypertarget{ux65b0ux7248ux672c}{%
\subsection{新版本}\label{ux65b0ux7248ux672c}}

\begin{Shaded}
\begin{Highlighting}[]
\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#     获得Linux环境          \#}
\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#下载ubuntu 20.04镜像}
\NormalTok{https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{ftp.sjtu.edu.cn}\SpecialCharTok{/}\NormalTok{ubuntu}\SpecialCharTok{{-}}\NormalTok{cd}\SpecialCharTok{/}\DecValTok{20}\NormalTok{.}\FloatTok{04.1}\SpecialCharTok{/}\NormalTok{ubuntu}\DecValTok{{-}20}\NormalTok{.}\FloatTok{04.1}\SpecialCharTok{{-}}\NormalTok{desktop}\SpecialCharTok{{-}}\NormalTok{amd64.iso}

\CommentTok{\#制作USB启动盘}
\CommentTok{\#下载使用rufus https://rufus.ie/}
\CommentTok{\#或者ultraISO https://cn.ultraiso.net/}

\CommentTok{\#挂载磁盘}
\CommentTok{\#假设未挂载磁盘为/dev/sdb}
\NormalTok{fdisk }\SpecialCharTok{{-}}\NormalTok{l}
\NormalTok{parted }\SpecialCharTok{/}\NormalTok{dev}\SpecialCharTok{/}\NormalTok{sdb}
\CommentTok{\#交互界面 }
\NormalTok{mklabel gpt}
\NormalTok{quit}
\CommentTok{\#格式化磁盘}
\NormalTok{mkfs.xfs }\SpecialCharTok{{-}}\NormalTok{f }\SpecialCharTok{/}\NormalTok{dev}\SpecialCharTok{/}\NormalTok{sdb }
\CommentTok{\#挂载磁盘}
\NormalTok{mkdir }\SpecialCharTok{/}\NormalTok{ifs1}
\NormalTok{mount }\SpecialCharTok{/}\NormalTok{dev}\SpecialCharTok{/}\NormalTok{sdb }\SpecialCharTok{/}\NormalTok{ifs1}
\CommentTok{\#修改fstab}
\NormalTok{echo }\StringTok{"/dev/sdb /ifs1                       xfs     defaults,uquota        0 0"} \SpecialCharTok{\textgreater{}}\ErrorTok{\textgreater{}/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{fstab}

\CommentTok{\#如果不安装系统，购买腾讯云服务器一年74元，2核心4G版本即可}
\NormalTok{https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{curl.qcloud.com}\SpecialCharTok{/}\NormalTok{gm6m0QoY}

\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#         基本配置           \#}
\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#创建root账户}
\NormalTok{sudo passwd root}
\NormalTok{输入当前用户密码：}
\NormalTok{输入root密码：}
\NormalTok{再次输入root密码：}

\CommentTok{\#以下操作使用root账户完成}
\NormalTok{su }\SpecialCharTok{{-}}

\CommentTok{\#修改源}
\NormalTok{cp }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{apt}\SpecialCharTok{/}\NormalTok{sources.list }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{apt}\SpecialCharTok{/}\NormalTok{sources.list.bak}
\NormalTok{sed }\SpecialCharTok{{-}}\NormalTok{i }\StringTok{\textquotesingle{}s\#cn.archive.ubuntu.com\#mirrors.aliyun.com\#g\textquotesingle{}} \SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{apt}\SpecialCharTok{/}\NormalTok{sources.list}
\NormalTok{sudo apt}\SpecialCharTok{{-}}\NormalTok{get update }\SpecialCharTok{\&\&}\NormalTok{ sudo apt}\SpecialCharTok{{-}}\NormalTok{get upgrade}

\CommentTok{\#ssh登录}
\NormalTok{apt install openssh}\SpecialCharTok{{-}}\NormalTok{server}
\NormalTok{ps }\SpecialCharTok{{-}}\NormalTok{e }\SpecialCharTok{|}\NormalTok{  grep ssh   }\CommentTok{\#检查ssh server是否启动}
\NormalTok{sudo }\SpecialCharTok{/}\NormalTok{etc}\SpecialCharTok{/}\NormalTok{init.d}\SpecialCharTok{/}\NormalTok{ssh start  }\CommentTok{\#启动}

\CommentTok{\#安装java}
\NormalTok{apt}\SpecialCharTok{{-}}\NormalTok{get install openjdk}\DecValTok{{-}8}\SpecialCharTok{{-}}\NormalTok{jdk}
\NormalTok{sudo add}\SpecialCharTok{{-}}\NormalTok{apt}\SpecialCharTok{{-}}\NormalTok{repository ppa}\SpecialCharTok{:}\NormalTok{webupd8team}\SpecialCharTok{/}\NormalTok{java}
\NormalTok{apt update}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y oracle}\SpecialCharTok{{-}}\NormalTok{java8}\SpecialCharTok{{-}}\NormalTok{installer}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y zlib1g zlib1g.dev}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y libboost}\SpecialCharTok{{-}}\NormalTok{dev}

\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#        安装R以及Rstudio    \#}
\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y r}\SpecialCharTok{{-}}\NormalTok{base}
\NormalTok{https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{download1.rstudio.org}\SpecialCharTok{/}\NormalTok{desktop}\SpecialCharTok{/}\NormalTok{bionic}\SpecialCharTok{/}\NormalTok{amd64}\SpecialCharTok{/}\NormalTok{rstudio}\DecValTok{{-}1}\NormalTok{.}\FloatTok{3.1093}\SpecialCharTok{{-}}\NormalTok{amd64.deb}
\NormalTok{dpkg }\SpecialCharTok{{-}}\NormalTok{i rstudio}\DecValTok{{-}1}\NormalTok{.}\FloatTok{3.1093}\SpecialCharTok{{-}}\NormalTok{amd64.deb}

\CommentTok{\#安装一些小工具}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y git vim tree creen htop cmake lftp lrzsz}

\CommentTok{\#apt安装生物软件}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bwa}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y samtools }
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bcftools}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y blast2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bedtools}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y seqtk}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y minimap2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bowtie2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y phylip}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y clustalx}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y canu}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y kraken2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y hisat2}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y stringtie}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y jellyfish}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y circos}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y nanopolish}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y nanook}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y centrifuge}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y rna}\SpecialCharTok{{-}}\NormalTok{star}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y freebayes}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y cnvkit}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y spades}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y mothur}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y muscle}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y mafft}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y iqtree}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y sniffles}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y last}\SpecialCharTok{{-}}\NormalTok{align}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y augustus}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bamtools }
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y bedops}
\NormalTok{apt install }\SpecialCharTok{{-}}\NormalTok{y delly}

\CommentTok{\#安装浏览器}
\NormalTok{apt}\SpecialCharTok{{-}}\NormalTok{get install }\SpecialCharTok{{-}}\NormalTok{y chromium}\SpecialCharTok{{-}}\NormalTok{browser}

\CommentTok{\#安装微信}
\NormalTok{wget https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{www.ubuntukylin.com}\SpecialCharTok{/}\NormalTok{public}\SpecialCharTok{/}\NormalTok{pdf}\SpecialCharTok{/}\NormalTok{wine}\SpecialCharTok{{-}}\NormalTok{wechat\_1}\FloatTok{.0}\SpecialCharTok{{-}}\NormalTok{windows2.}\FloatTok{8.6}\NormalTok{\_all.deb}
\CommentTok{\#Debian 系的操作系统可以执行这样的命令：}
\NormalTok{sudo dpkg }\SpecialCharTok{{-}{-}}\NormalTok{add}\SpecialCharTok{{-}}\NormalTok{architecture i386}
\NormalTok{sudo apt update}
\CommentTok{\#安装 wine 应用所需的依赖，也就是 wine：}
\NormalTok{sudo apt install wine}\SpecialCharTok{{-}}\NormalTok{stable}
\CommentTok{\#使用 dpkg 安装 wine 应用：}
\NormalTok{sudo dpkg }\SpecialCharTok{{-}}\NormalTok{i wine}\SpecialCharTok{{-}}\NormalTok{wechat\_1}\FloatTok{.0}\SpecialCharTok{{-}}\NormalTok{windows2.}\FloatTok{8.6}\NormalTok{\_all.deb}

\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#       安装bioconda         \#}
\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\NormalTok{wget https}\SpecialCharTok{:}\ErrorTok{//}\NormalTok{repo.continuum.io}\SpecialCharTok{/}\NormalTok{miniconda}\SpecialCharTok{/}\NormalTok{Miniconda3}\SpecialCharTok{{-}}\NormalTok{latest}\SpecialCharTok{{-}}\NormalTok{Linux}\SpecialCharTok{{-}}\NormalTok{x86\_64.sh  }
\NormalTok{sh Miniconda3}\SpecialCharTok{{-}}\NormalTok{latest}\SpecialCharTok{{-}}\NormalTok{Linux}\SpecialCharTok{{-}}\NormalTok{x86\_64.sh  }
\NormalTok{source }\SpecialCharTok{\textasciitilde{}}\ErrorTok{/}\NormalTok{.bashrc}

\CommentTok{\#添加软件源}
\NormalTok{conda config }\SpecialCharTok{{-}{-}}\NormalTok{add channels bioconda }
\NormalTok{conda config }\SpecialCharTok{{-}{-}}\NormalTok{add channels conda}\SpecialCharTok{{-}}\NormalTok{forge}

\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\# 使用bioconda安装常用软件   \#}
\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#安装mamba}
\NormalTok{conda install }\SpecialCharTok{{-}}\NormalTok{c conda}\SpecialCharTok{{-}}\NormalTok{forge }\SpecialCharTok{{-}}\NormalTok{y mamba}

\CommentTok{\#利用mamba安装软件}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y bwa }
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y samtools}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y bcftools}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y blast }
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y blat }
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y mummer }
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y mafft }
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y muscle }
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y lastz}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y sra}\SpecialCharTok{{-}}\NormalTok{tools}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y seqkit}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y seqtk}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y bedtools}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y bedops}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y gfatools}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y circos}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y entrez}\SpecialCharTok{{-}}\NormalTok{direct}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y emboss}

\CommentTok{\#安装数据质控软件}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y fastqc multiqc }
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y trimmomatic}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y fastp}

\CommentTok{\#安装基因组拼接相关工具}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y velvet}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y flye}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y miniasm}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y canu}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y megahit}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y spades}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y quast}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y racon}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y miniasm}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y nanopolish}

\CommentTok{\#安装基因功能分析软件}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y prodigal}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y glimmer}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y augustus}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y trf}

\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#      使用虚拟环境             \#}
\DocumentationTok{\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#}
\CommentTok{\#1 创建python 2.7环境}
\NormalTok{conda create }\SpecialCharTok{{-}}\NormalTok{n py27 }\SpecialCharTok{{-}}\NormalTok{y python}\OtherTok{=}\FloatTok{2.7}
\CommentTok{\#查看现有虚拟环境}
\NormalTok{conda env list}
\CommentTok{\#激活python2.7环境}
\NormalTok{conda activate py27}
\CommentTok{\#查看python版本}
\NormalTok{python }\SpecialCharTok{{-}}\NormalTok{V}

\CommentTok{\#2 安装nanoplot}
\NormalTok{conda create }\SpecialCharTok{{-}}\NormalTok{n nanoplot }\SpecialCharTok{{-}}\NormalTok{y nanoplot}

\CommentTok{\#3 bioconda管理R及R包}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y r}\SpecialCharTok{{-}}\NormalTok{base}\OtherTok{=}\DecValTok{4}\NormalTok{.}\FloatTok{1.1}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y bioconductor}\SpecialCharTok{{-}}\NormalTok{deseq2}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y bioconductor}\SpecialCharTok{{-}}\NormalTok{rnaseqgene}
\NormalTok{mamba install }\SpecialCharTok{{-}}\NormalTok{y bioconductor}\SpecialCharTok{{-}}\NormalTok{clusterProfiler}
\end{Highlighting}
\end{Shaded}

\hypertarget{genomics}{%
\chapter{基因组学}\label{genomics}}

\hypertarget{ux57faux56e0ux5bb6ux65cfux5206ux6790}{%
\section{基因家族分析}\label{ux57faux56e0ux5bb6ux65cfux5206ux6790}}

基因家族分析是一种常见的生物信息学分析套路，也是生物信息学数据挖掘发表小文章常用的分析方法，和GEO挖掘等类似。基因家族的分析鉴定可以用\href{http://pfam.xfam.org/}{pfam}上的\texttt{hmm}文件进行基因家族的检索鉴定，也可以用\texttt{blast}的方法进行比对鉴定，通常是适用拟南芥对应的基因家族进行比对鉴定。
植物转录因子数据库，\href{http://planttfdb.gao-lab.org/}{点击访问}。

\hypertarget{ux57faux56e0ux5bb6ux65cfux5206ux6790ux601dux8defux53caux6587ux7ae0ux64b0ux5199ux601dux8def}{%
\subsection{基因家族分析思路及文章撰写思路}\label{ux57faux56e0ux5bb6ux65cfux5206ux6790ux601dux8defux53caux6587ux7ae0ux64b0ux5199ux601dux8def}}

基因家族分析是继GEO数据挖掘后，一种新的生物信息学挖掘策略。

如何做基因家族研究，可以参考这个帖子：\url{http://www.planttech.com.cn/blog/58882464a46}。

为什么我们要选择三七呢？

首先三七参考基因组还不是很多，我们实验室有一个，今年杨生超副校长有一篇最新的，这些基因组数据为我们后续做三七基因家族研究提供了坚实的基础；其次，我们实验室以三七为主，有大量的三七资源，方便我们后续验证。

文章撰写的格式建议以\textbf{\emph{Frontiers in Plant Science}}为模板，后续方便修改。

每个基因家族都有大量的综述，因为基因家族基本都是转录因子，转录因子基本都是有很好的综述的。

\hypertarget{ux6570ux636eux51c6ux5907}{%
\subsection{数据准备}\label{ux6570ux636eux51c6ux5907}}

需要准备的数据主要是参考基因组数据，包括\texttt{fasta}格式的序列文件、\texttt{gff}或\texttt{gtf}格式的基因组注释文件、蛋白质序列文件（通常是每个转录本的蛋白序列）、\texttt{cDNA}序列等文件。如果有转录组数据的话进行对应的转录组分析即可。除开上述这些文件外，还需要适用的文件还有\texttt{.hmm}格式的文件。

\hypertarget{ux8f6fux4ef6ux51c6ux5907}{%
\subsection{软件准备}\label{ux8f6fux4ef6ux51c6ux5907}}

只需要会使用Linux系统，会安装Docker即可，然后下载\texttt{组学大讲堂}的镜像即可。\href{https://hub.docker.com/r/omicsclass/gene-family}{点击浏览}镜像地址。Docker的安装适用方法参考\ref{WSL4Docker}。

\hypertarget{ux5206ux6790ux8fc7ux7a0b}{%
\subsection{分析过程}\label{ux5206ux6790ux8fc7ux7a0b}}

\begin{itemize}
\tightlist
\item
  mRNA\_ID与基因ID的提取
  由于一个基因会对应多个转录本，因此一个基因下会对应多个mRNA的编号。在后续的分析中，每个基因只需要选择一个转录本的编号进行分析即可，因为每个基因不同的转录本的序列差异是较小的。提取的代码：
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{mRNAid\_to\_geneid.pl data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.gff}\SpecialCharTok{*}\NormalTok{ results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{1.}\NormalTok{get.mRNA.and.gene.ID}\SpecialCharTok{/}\NormalTok{mRNA2geneID.txt}
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{geneid\_to\_mRNAid.pl data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.gff}\SpecialCharTok{*}\NormalTok{ results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{1.}\NormalTok{get.mRNA.and.gene.ID}\SpecialCharTok{/}\NormalTok{geneID2mRNAid.txt}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  检索结构域
  这一步主要是以\texttt{.hmm}文件为基础检索该物种蛋白序列中含有该结构域的序列。输入文件包括\texttt{.hmm}文件和蛋白文件，输出\texttt{hmmsearch}的检索结果。其中用于后续筛选的是\texttt{evalue}这个参数，部分文章以0.001为阈值。\texttt{of}那一列表示的是某个基因对应的这个结构域有几个。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{hmmsearch }\SpecialCharTok{{-}{-}}\NormalTok{domtblout results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{hmm.txt }\SpecialCharTok{{-}{-}}\NormalTok{cut\_tc data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.hmm data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.pep}\SpecialCharTok{*}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  选择结构域
  由于一个基因的单个转录本可能会比对到多个结构域，因此需要对比对到的结构域进行选择。默认选择的是第一个结构域。下面代码的最后一个参数是\texttt{hmmsearch}输出文件里面的\texttt{E-value},如果需要全部的第一个结构域，将阈值设置为1即可。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{domain\_xulie.pl results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{hmm.txt data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.pep}\SpecialCharTok{*}\NormalTok{ results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{domain.fa }\FloatTok{1.2e{-}28}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  多序列比对
  之所以要进行多序列比对，是因为下载的\texttt{.hmm}文件是来自很多物种的这个结构域组成的隐马尔科夫模型，进行多序列比对后将该物种检索到的结构域序列进行比对，再次构建该物种该基因家族的隐马尔科夫模型，会更加准确。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{echo }\SpecialCharTok{{-}}\NormalTok{e }\StringTok{\textquotesingle{}1}\SpecialCharTok{\textbackslash{}n}\StringTok{results/step.2.domain.search/domain.fa}\SpecialCharTok{\textbackslash{}n}\StringTok{2}\SpecialCharTok{\textbackslash{}n}\StringTok{1}\SpecialCharTok{\textbackslash{}n}\StringTok{results/step.2.domain.search/out.aln}\SpecialCharTok{\textbackslash{}n}\StringTok{r.domain.search/out.dnd}\SpecialCharTok{\textbackslash{}n}\StringTok{X}\SpecialCharTok{\textbackslash{}n\textbackslash{}n\textbackslash{}n}\StringTok{X}\SpecialCharTok{\textbackslash{}n}\StringTok{\textquotesingle{}} \SpecialCharTok{|}\NormalTok{clustalw}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  重构隐马尔科夫模型
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{hmmbuild results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{new.hmm results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{out.aln}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  重新进行检索
  利用构建得到的新的隐马尔科夫模型重新进行检索结构域。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{hmmsearch }\SpecialCharTok{{-}{-}}\NormalTok{domtblout results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{new.out.txt }\SpecialCharTok{{-}{-}}\NormalTok{cut\_tc results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{new.hmm data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.pep}\SpecialCharTok{*}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  筛选输出结果
  对重新检索后的结果进行筛选，也是对\texttt{E-value}进行筛选。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{grep }\SpecialCharTok{{-}}\NormalTok{v }\StringTok{"\^{}\#"}\NormalTok{ results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{new.out.txt}\SpecialCharTok{|}\NormalTok{awk }\StringTok{\textquotesingle{}$7\textless{}0.001 \{print\}\textquotesingle{}} \SpecialCharTok{\textgreater{}}\NormalTok{ results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{domain.new.out.selected.txt}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  去除重复的ID
  上一步筛选得到的是该种中哪些基因是潜在的目标基因家族成员，而一个基因对应了多个mRNA，因此，只需要在筛选后的每个基因中选择一个具有代表性的mRNA进行后续的分析即可。这个提取唯一ID的步骤需要手动完成（PS：手动完成也很快）。手动挑选完mRNA的ID放在第一列，另存为文件\texttt{uniqueID.txt}。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{select\_redundant\_mRNA.pl results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{1.}\NormalTok{get.mRNA.and.gene.ID}\SpecialCharTok{/}\NormalTok{mRNA2geneID.txt results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{domain.new.out.selected.txt results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{remove\_redundant\_IDlist.txt}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  提取蛋白序列
  在得到基因ID后需要提取蛋白序列进行后续的分析。在\href{http://smart.embl.de/}{SMART}或者\href{http://pfam.xfam.org/search}{Pfam}或\href{https://www.ncbi.nlm.nih.gov/cdd/}{NCBI CDD}确认这些基因是真真正正含有该结构域，没有的基因要剔除！在\texttt{SMART}中没有检索到结构域的基因在\texttt{gene.not.in.SMART.txt}中；在\texttt{Pfam}中全都是\texttt{WRKY}结构域，对应文件为\texttt{Pfam.results.txt}。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{get\_fa\_by\_id.pl results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{uniqueID.txt data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.pep}\SpecialCharTok{*}\NormalTok{ results}\SpecialCharTok{/}\NormalTok{step}
\NormalTok{.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{pep.need.confirm.fa}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  计算蛋白质分子量等
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{stat\_protein\_fa.pl results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{pep.need.confirm.fa results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{pep.MW.txt}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  构建进化树
  选择利用软件\texttt{CLUSTALW}进行多序列比对，然后利用\texttt{MEGA}构建进化树。\texttt{CLUSTALW}输出结果转换成\texttt{.fasta}格式的方法参考\ref{pac4xiang}。
\item
  Motif分析
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{meme results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{3.}\NormalTok{seq.and.tree}\SpecialCharTok{/}\NormalTok{pep\_confirmed.fa }\SpecialCharTok{{-}}\NormalTok{protein }\SpecialCharTok{{-}}\NormalTok{oc results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{4.}\NormalTok{motif}\SpecialCharTok{/} \SpecialCharTok{{-}}\NormalTok{nostatus }\SpecialCharTok{{-}}\NormalTok{time }\DecValTok{18000} \SpecialCharTok{{-}}\NormalTok{maxsize }\DecValTok{6000000} \SpecialCharTok{{-}}\NormalTok{mod anr }\SpecialCharTok{{-}}\NormalTok{nmotifs }\DecValTok{10} \SpecialCharTok{{-}}\NormalTok{minw }\DecValTok{6} \SpecialCharTok{{-}}\NormalTok{maxw }\DecValTok{100}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  基因结构分析
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{get\_gene\_exon\_from\_gff.pl }\SpecialCharTok{{-}}\NormalTok{in1 results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{uniqueID.txt }\SpecialCharTok{{-}}\NormalTok{in2 data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.gff}\SpecialCharTok{*} \SpecialCharTok{{-}}\NormalTok{out results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{5.}\NormalTok{gene.structure}\SpecialCharTok{/}\NormalTok{gene\_exon\_info.gff}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  基因在染色体上的定位
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{samtools faidx data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.dna}\SpecialCharTok{*}
\NormalTok{cp data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.fai results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{5.}\NormalTok{gene.structure}\SpecialCharTok{/}
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{get\_gene\_weizhi.pl }\SpecialCharTok{{-}}\NormalTok{in1 results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{2.}\NormalTok{domain.search}\SpecialCharTok{/}\NormalTok{uniqueID.txt }\SpecialCharTok{{-}}\NormalTok{in2 data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{.gff}\SpecialCharTok{*} \SpecialCharTok{{-}}\NormalTok{out results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{5.}\NormalTok{gene.structure}\SpecialCharTok{/}\NormalTok{mrna\_location.txt}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  顺式作用元件分析
  脚本默认的启动子长度是1500bp。将提取得到的启动子序列上传到\href{https://bioinformatics.psb.ugent.be/webtools/plantcare/html/}{Plane CARE}进行分析。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{perl code}\SpecialCharTok{/}\NormalTok{script}\SpecialCharTok{/}\NormalTok{get\_promoter.pl data}\SpecialCharTok{/}\NormalTok{unzip\_data}\SpecialCharTok{/}\ErrorTok{*}\NormalTok{dna.top}\SpecialCharTok{*}\NormalTok{ results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{5.}\NormalTok{gene.structure}\SpecialCharTok{/}\NormalTok{mrna\_location.txt results}\SpecialCharTok{/}\NormalTok{step.}\FloatTok{6.}\NormalTok{cis.acting.element}\SpecialCharTok{/}\NormalTok{promoter.txt}
\end{Highlighting}
\end{Shaded}

\begin{itemize}
\tightlist
\item
  基因家族成员的亚细胞定位分析
  两个网站：\href{https://wolfpsort.hgc.jp/}{WolfPsort}和\href{http://cello.life.nctu.edu.tw/}{Cello}。
\end{itemize}

\hypertarget{rnaseq}{%
\chapter{RNA-Seq}\label{rnaseq}}

\hypertarget{meta}{%
\chapter{代谢组学}\label{meta}}

\hypertarget{pro}{%
\chapter{蛋白质组}\label{pro}}

\hypertarget{multi}{%
\chapter{多组学}\label{multi}}

\hypertarget{part-part-ux2173-ux6587ux732eux9605ux8bfb}{%
\part*{Part Ⅳ: 文献阅读}\label{part-part-ux2173-ux6587ux732eux9605ux8bfb}}
\addcontentsline{toc}{part}{Part Ⅳ: 文献阅读}

\hypertarget{patho}{%
\chapter{植物病理学}\label{patho}}

\hypertarget{ux4f55ux7956ux534e2021cellux6587ux7ae0}{%
\section{\texorpdfstring{何祖华2021\emph{Cell}文章}{何祖华2021Cell文章}}\label{ux4f55ux7956ux534e2021cellux6587ux7ae0}}

这是一篇让人读完以后叹为观止的文章\autocite{gao2021ca2:Cell}，精彩，实在是精彩！

\includegraphics{figures/HeZuhuaCell2021/17.png}

故事是这样开始的，在TP309（粳稻）育种群体中，发现一个很特殊的变种，这个变种携带了一个叫做\emph{\texttt{rod1}}的基因，这个基因有什么特别的地方呢？通过田间试验和室内试验发现，携带了\emph{\texttt{rod1}}基因的植株对水稻纹枯病、水稻稻瘟病和水稻白叶枯病这三种严重影响水稻生产的病害都具有广谱抗性（下图ABC）；而且，其植株体内的SA和JA的含量也比TP309的高很多（下图D）。

\includegraphics{figures/HeZuhuaCell2021/1.png}

为了验证\emph{\texttt{rod1}}的广谱抗性，利用常规的RNA-Seq对TP309和携带\emph{\texttt{rod1}}的植株进行转录组测序，测序的结果可以说是非常明显了，但从热图上看是完全分开的（下图E），然后呢对这些差异基因进行GO富集分析，发现有几个很特殊的GO term在\emph{\texttt{rod1}}里面没有，这几个通路分别是内肽酶、钙结合及DNA结合（下图F紫色的字）。\emph{\texttt{rod1}}中显著富集到的GO term有离子结合、氧化酶等。于是，作者他们认为\emph{\texttt{rod1}}中Ca\(^{2+}\)与ROS两者之间存在某种关系，导致其免疫上调。然后在田间观察TP309和\emph{\texttt{rod1}}对水稻产量的影响，发现在自然田间条件下的话，\emph{\texttt{rod1}}植株的单株产量远低于TP309的；但是在天然的稻瘟病苗圃中，\emph{\texttt{rod1}}的单株产量远高于TP309。这个结果能说明啥呢？这个结果说明如果有病害侵染的话，\emph{\texttt{rod1}}植株会表现得更好，也就是产量更高。

\includegraphics{figures/HeZuhuaCell2021/2.png}

下一步要做的，肯定是把这个基因克隆出来，只有克隆出来，才能做进一步的深入研究。利用图位克隆技术在水稻的6号染色体附近大概53kb的一个区域定位到该基因（下图A），命名为\emph{\texttt{ROD1}}；进一步比较了水稻参考基因组水稻品种Nippionbare、TP309及\emph{\texttt{rod1}}在该区域的序列差异，发现\emph{\texttt{rod1}}存在一个核苷酸的缺失，也就是TP309里面的是\texttt{ATGGG}，在\emph{\texttt{rod1}}里面是\texttt{AT-GG}，中间少了个\texttt{G}（下图B）。为了确定他们鉴定的这个基因，利用遗传互补（也就是利用野生型基因补偿突变型基因使其恢复正常的表型）确认了该基因的功能（下图C）。

\includegraphics{figures/HeZuhuaCell2021/3.png}

这个基因的蛋白长度大概是225个氨基酸长度，并且含有一个C2结构域（蛋白质激酶C保守结构域2，承担信号转导和细胞膜转运功能），这个结构域上还含有4个天冬氨酸残基（下图A）。然后利用玉米泛素启动子将\emph{\texttt{ROD1}}过表达，过表达以后呢制作对水稻上的三种病害的抗性都降低了（下图DEFGH）。这个结果说明\emph{\texttt{ROD1}}是水稻免疫抑制子，也就是它越表达，水稻的抗性越低。

\includegraphics{figures/HeZuhuaCell2021/4.png}

不同的基因在植株体内表达的位点是不一样的，有的基因在根系表达多，有的基因在叶片中表达更旺盛。那\emph{\texttt{ROD1}}主要是水稻植株的那个部位表达呢？通过原位杂交（\emph{\texttt{In\ situ\ hybridization}}），发现\emph{\texttt{ROD1}} 主要是在叶片上进行表达（下图B），而叶片更好是更多病原菌侵染的部位。而且在水稻植株被水稻白叶枯病菌侵染后，\emph{\texttt{ROD1}} 的表达会被诱导上调（下图C）。\emph{\texttt{rod1}}在田间生长的时候穗子比TP309短，穗子上的分支也更少（下图K），但是在过表达\emph{\texttt{ROD1}} 后，穗子更长，产量也更高（下图KL）。这个结果表明\texttt{ROD1}在水稻的抗性和生长适应性两方面具有不同的作用。也就是\emph{\texttt{rod1}}的抗性高，但是产量低；\emph{\texttt{ROD1}} 的抗性低，但是产量高。这也符合植物生长-免疫平衡的基本原则。

\includegraphics{figures/HeZuhuaCell2021/5.png}

再下一步是探究\texttt{ROD1}的同系物的分布情况，在开花植物中都有其同系物的存在，但是在苔藓等低等植物中没有其同系物的踪迹（下图AB）。这个结果表明ROD1这一类C2结构域蛋白出现在植物进化的较晚期。ROD1类蛋白在单子叶作物中有着极高的序列保守性，但是在拟南芥等十字花科的植物中却有着较高的多样性（下图B）。要是我分析，肯定是到这里就结束了，但是作者团队在这个地方提出的问题是``ROD1类蛋白在谷物类作物的免疫过程中是否有保守作用呢？''。于是呢，就用CRISPR/Cas9技术在玉米上搞了个突变体，结果发现突变体中\emph{\texttt{PR}}基因的表达量更高，而且突变体对\emph{R.solani} 的抗性更强（下图CDE）。这个结果加上前面的结果表明\emph{\texttt{ROD1}}及其同系物在谷物中是一类特别的感病基因，在谷物免疫的过程中扮演者保守的功能。

\includegraphics{figures/HeZuhuaCell2021/6.png}

前面提到\emph{\texttt{ROD1}}蛋白结构含有1个C2结构域，那这个有什么用呢？C2结构域通常是Ca\(^{2+}\)感受器，这类结构域依赖Ca\(^{2+}\)与磷脂结合，从而将蛋白质靶向到特定的膜区域。那ROD1这个蛋白到底能不能和Ca\(^{2+}\)结合呢？能不能结合那肯定是要有个参照，怎么获得有效的参照呢？对这个蛋白的4个氨基酸残基进（因为C2结构域的氨基酸残基影响其和Ca\(^{2+}\)的结合）行突变，有单突变、双重突变、三重突变及四重突变（下图C）。利用微量热泳动方法来探究ROD1这个蛋白和Ca\(^{2+}\)的结合特性（下图D），图中的KD值的大小表示的是分子间的亲和性，越亲和的，其KD值越小。没有突变的ROD1和Ca\(^{2+}\)的KD值很小，而单位点突变和四重突变的KD值都很大，整整大了3个数量级。Ca\(^{2+}\)能够改变C2结构域的电位，使得C2结构与能够与磷脂进行结合。那下一步就是探究ROD1与不同脂质结合的能力与特异性（下图A）。从图中可以看到的是，ROD和PI(3,5)P2、PI(4)P及PI(5)P结合较好，但是Ca\(^{2+}\)螯合剂EGTA存在的时候，ROD1就不能与这些脂质进行结合。也就是说当没有Ca\(^{2+}\)的时候，ROD1是不能与磷脂进行结合的。

\includegraphics{figures/HeZuhuaCell2021/7.png}

ROD1这个蛋白在哪里发挥功能呢？这也就需要对其进行定位。通过定位发现这个蛋白位于质膜周围的细胞外围空间（下图B）。但是将其4个氨基酸残基进行突变后都不同程度地出现了蛋白的降解（下图DE\(_上\)）。用\texttt{flg22}处理后，ROD1在质膜上的积累量更多（下图EF），这说明免疫激活促进了ROD1在质膜上的分布。

\includegraphics{figures/HeZuhuaCell2021/8.png}

除了利用突变体看突变氨基酸残基后蛋白的定位，还检测突变不同的氨基酸位点后其抗性的变化，也就是过表达这些基因，不同程度的突变都导致对应植株的抗性降低，对三种病害的响应出奇一致（下图FGH）。不同位点的突变对植株的构型也有一定的影响（下图I）。

\includegraphics{figures/HeZuhuaCell2021/9.png}

上述这些结果表明ROD1和Ca\(^{2+}\)结合后，进一步与磷脂结合，最后在质膜上``定居''。其实在这个部分已经能够看出，要是没有Ca\(^{2+}\)，那ROD1就``手足无措''了。

有了材料，有了表型，克隆到了基因，纯化到了蛋白，也知道这个基因能够影响植株的免疫，那下一步就是探究其免疫的机制。利用的方法是酵母双杂（Y2H）。首先是 以水稻稻瘟病互作的叶片建立一个cDNA文库，然后以ROD1为``鱼饵''去钓这个文库中与ROD1互作的蛋白。成功得到两个RING E3泛素连接酶，分别是RIP1和APIP6（下图）。进行更多试验后发现ROD1被RIP1和APIP6这两个蛋白泛素化（泛素化就是某个蛋白被加上一段标签，被加上标签的蛋白会被其他的细胞器所识别，大多被泛素化的蛋白的最终命运是降解）。

\includegraphics{figures/HeZuhuaCell2021/10.png}

为了进一步验证RIP1和APIP6的功能，分别构建了敲除系和过表达系。果然不出意外，敲除系的植株的抗性都降低了，而过表达系植株的抗性都提高了。怎么理解呢？将这两个蛋白敲除后，ROD1就不能被泛素化，那它就不会降解，表达量较高，因此植株的抗性被抑制；将这两个蛋白过表达后，含量增加，ROD1被``疯狂''泛素化，也就是被疯狂降解，那植株的免疫就不会受到抑制，从而表现出较强的抗性。

\includegraphics{figures/HeZuhuaCell2021/11.png}

除了RIP1和APIP6以外，酵母双杂还找到一个和ROD1互作的过氧化氢酶CatB。通过分裂荧光素酶互补试验和coIP发现ROD1和CatB是能够互作的（下图左AB）。过氧化氢酶能够清除ROS从而降低寄主的免疫水平。用CRISPR/Cas9将CatB敲除后，水稻植株体内\emph{\texttt{PR}}基因的表达上调，植株对病害的抗性增强（下图右ABCD）。这说明CatB负向调控水稻对病害的免疫响应。

\includegraphics{figures/HeZuhuaCell2021/12.png}

那ROD1和CatB是如何互作的呢？先用不同浓度的ROD1和CatB共同清除活性氧，可以发现的随着ROD1浓度的提高，CatB的活性增强，也就是说ROD1浓度越高，那CatB清楚的活性氧也就越多（下图C）；但是将基因\emph{\texttt{ROD1}}进行突变后，蛋白ROD1介导的CatB清除活性氧的能力没有变化（下图D），也就是ROD1只有和Ca\(^{2+}\)结合后才能正常和CatB互作，从而清除ROS。怎么理解呢？前面说到，如果突变\emph{\texttt{ROD1}}C1结构域上的4个氨基酸残基，那ROD1和Ca\(^{2+}\)结合的能力就降低了，没有Ca\(^{2+}\)结合，ROD1就不能正常介导CatB对ROS的清除。进一步提取活体植株体内的ROD1，发现TP309中CatB的活性都更搞（下图EF）。与之对应的是，TP309植株中H\(_2\)O\(_2\)的含量更低（下图GHI）。这些结果说明了啥呢？说明ROD1是通过介导ROS的清除来影响植株的免疫的。CatB这个蛋白主要定位在过氧化物酶体上，但是呢在质膜上也检测到了CatB的存在，当有ROD1存在的时候CatB在质膜上积累的量更多（下图JL），这样就说明了ROD1促进CatB在质膜上的定位。进一步利用本氏烟验证发现CatB能够在一定程度上清除由MLA10介导的过敏反应，当ROD1和CatB共同作用的时候这种过敏反应几乎完全消失了。上面这些结果表明ROD1首先将CatB募集到质膜能赶上，然后再激发CatB去清除活性氧。

\includegraphics{figures/HeZuhuaCell2021/13.png}

找到这样一个基因，做完上述这些研究，其实已经很完美了。作者他们进一步探究这个基因在水稻群体中的变异情况。通过群体遗传分析发现\emph{ROD1}这个位点上的核苷酸多态性很低，也就意味着这个位点在进化过程中发生了选择扫描事件（下图左A）。在约3000个水稻品种中，只有\emph{indica} 这个亚种的\texttt{Tajima’s\ D}值是负值，也就意味着在\emph{indica} 这个亚种中\emph{ROD1}经历了不同的选择作用（下图B）。在这个基因的编码区发现了两个SNP，分别是SNP1\(^{A/C}\)和SNP2\(^{G/C}\)。第一个SNP是一个非同义的突变，在这个位点上脯氨酸变成了苏氨酸；第二个SNP是一个同义突变，编码的氨基酸没有发生改变。基于这两种SNP分类，可以将其分为三种单倍型（下图右A）。

\includegraphics{figures/HeZuhuaCell2021/14.png}

随机选了178个含有这三种单倍型的水稻品种，调查其在田间对纹枯病的抗性（因为纹枯病还没有主效抗病基因），发现含有SNP1\(^{A/C}\)的水稻品种对纹枯病的抗性更强（下图D）。将这两种SNP导入到\emph{rod1}中后发现SNP1\(^{C}\)的抗性基本和TP309持平，SNP1\(^{A}\)植株的抗性比\emph{rod1}的弱一些（下图F），这个结果再次表明SNP1\(^{A/C}\)确实影响植株的基础免疫。为了进一步验证SNP1\(^{A}\)和SNP1\(^{C}\)的功能差异，他们构建了染色体片段替换系，发现携带SNP1\(^{C}\)的植株的抗性更弱（下图G），也就意味着携带SNP1\(^{A}\)的抗性更强，但是在产量上是没有差异的。进一步探究发现这两种单倍型对CatB的影响也不一样，SNP1\(^{C}\)对CatB的影响更大，也就意味着\emph{ROD1}上单核苷酸的变异影响其与CatB的互作。为了探明SNP1\(^{A/C}\)的进化差异，比较了44个野生稻中\emph{ROD1}的序列差异，发现只有4个野生稻携带了SNP1\(^{C}\)，剩下的40个都携带的是SNP1\(^{C}\)。SNP1\(^{A}\)主要存在于籼稻中，而SNP1\(^{C}\)主要存在于野生稻和粳稻中，而籼稻主要分布在热带和亚热带，而粳稻主要分布在温带，也就是说SNP1\(^{C}\)和SNP1\(^{C}\)的分布是有明显的分布差异的（下图H）。总之，这些结果表明\emph{ROD1}等位基因的变化导致其清除ROS的能力有差异，也就导致了品种特异性的抗性差异。

\includegraphics{figures/HeZuhuaCell2021/15.png}

之前鉴定到的与ROD1互作的蛋白APIP6有报道它能够和稻瘟病菌的效应子AvrPiz-t互作并将其降解，RIP1和APIP6高度相似，那RIP1能不能与AvrPiz-t互作呢？通过一波试验发现这两个蛋白确实能够互作。也就是说ROD1与AvrPiz-t都与RIP1和APIP6互作，而且ROD1和AvrPiz-t都能抑制寄主免疫，那AvrPiz-t抑制寄主免疫的机制是不是和ROD1一样呢？一波试验过后发现AvrPiz-t和ROD1一样，与同样的E3泛素连接酶互作，参与同样的降解通路，同样促进了过氧化物酶介导的ROS清除来抑制寄主植物的免疫。利用ROD1的启动子在\emph{rod1}中过表达AvrPiz-t，发现过表达后，\emph{rod1}原先的抗性基本全部丧失（下图BC）。然后呢利用两个不同的水稻品种ZH11和TP309进行进一步验证，其中ZH11含有AvrPiz-t的抗性基因，而TP309没有这个对应的基因，两个水稻品种都接种稻瘟病菌TH12（没有效应子\emph{AvrPiz-t}）。发现ROD1能够在一定程度上恢复TH12的致病力（下图D）。再比较ROD1和AvrPiz-t的蛋白结构后发现这两个蛋白的结构极其相似，也就意味着它们有着一样的的免疫抑制机制。

\includegraphics{figures/HeZuhuaCell2021/16.png}

\hypertarget{liter-genomics}{%
\chapter{基因组学}\label{liter-genomics}}

\hypertarget{liter-rnaseq}{%
\chapter{RNA-Seq}\label{liter-rnaseq}}

\hypertarget{liter-meta}{%
\chapter{代谢组学}\label{liter-meta}}

\hypertarget{liter-pro}{%
\chapter{蛋白质组}\label{liter-pro}}

\hypertarget{part-part-ux2174-ux6587ux7ae0ux53d1ux8868}{%
\part*{Part Ⅴ: 文章发表}\label{part-part-ux2174-ux6587ux7ae0ux53d1ux8868}}
\addcontentsline{toc}{part}{Part Ⅴ: 文章发表}

\hypertarget{myarticle}{%
\chapter{文章发表}\label{myarticle}}

\hypertarget{part-part-ux2175-ux4e0aux8bfeux7b14ux8bb0}{%
\part*{Part Ⅵ: 上课笔记}\label{part-part-ux2175-ux4e0aux8bfeux7b14ux8bb0}}
\addcontentsline{toc}{part}{Part Ⅵ: 上课笔记}

\hypertarget{class}{%
\chapter{上课笔记}\label{class}}

\hypertarget{ux674eux6210ux4e91ux73b0ux4ee3ux690dux7269ux75c5ux7406ux5b66}{%
\section{李成云：现代植物病理学}\label{ux674eux6210ux4e91ux73b0ux4ee3ux690dux7269ux75c5ux7406ux5b66}}

\hypertarget{section}{%
\subsection{20211022}\label{section}}

\begin{itemize}
\item
  韩斌野生稻文章
\item
  国际水稻所最新的3K文章（未发表）
\item
  TIR-NBS-LRR在水稻中没有，但是CC-NBS-LRR在水稻中很多
\item
  DOI：10.1007/s00122-004-1758-x水稻上的R基因的分布
\item
  \href{http://shigen.nig.ac.jp/shigen/index.jsp}{基因资源库}
\item
  水稻白叶枯病菌释放的效应子可以进入到细胞核，与寄主蛋白进行互作
\item
  Pita的三篇文章可以参考
\item
  Pigm, Pi1、5、9这些抗性基因只在籼型水稻中存在
\item
  长期的协同进化过程中，寄主和病原共有的基因！！！
\end{itemize}

\hypertarget{part-part-ux2176-ux5176ux4ed6}{%
\part*{Part Ⅶ: 其他}\label{part-part-ux2176-ux5176ux4ed6}}
\addcontentsline{toc}{part}{Part Ⅶ: 其他}

\hypertarget{other}{%
\chapter{其他笔记}\label{other}}

\printbibliography

\end{document}
